diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..3aa8108 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +*.rpm +*.log +*spec-20* +*.tgz diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..45f3f86 --- /dev/null +++ b/Makefile @@ -0,0 +1,21 @@ +# Makefile for source rpm: smeserver-qmHandle +# $Id: Makefile,v 1.1 2020/10/13 11:53:27 brianr Exp $ +NAME := smeserver-qmHandle +SPECFILE = $(firstword $(wildcard *.spec)) + +define find-makefile-common +for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done +endef + +MAKEFILE_COMMON := $(shell $(find-makefile-common)) + +ifeq ($(MAKEFILE_COMMON),) +# attept a checkout +define checkout-makefile-common +test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2 +endef + +MAKEFILE_COMMON := $(shell $(checkout-makefile-common)) +endif + +include $(MAKEFILE_COMMON) diff --git a/README.md b/README.md index 773e0a5..978d56b 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,15 @@ -# smeserver-qmHandle +# smeserver-qmHandle -SMEServer Koozali developed git repo for smeserver-qmHandle smecontribs \ No newline at end of file +SMEServer Koozali developed git repo for smeserver-qmHandle smecontribs + +## Wiki +
https://wiki.koozali.org/Qmhandle_mail_queue_manager + +## Bugzilla +Show list of outstanding bugs: [here](https://bugs.koozali.org/buglist.cgi?component=smeserver-qmHandle&product=SME%20Contribs&query_format=advanced&limit=0&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&bug_status=CONFIRMED) + +## Description + +
*This description has been generated by an LLM AI system and cannot be relied on to be fully correct.* +*Once it has been checked, then this comment will be deleted* +
diff --git a/contriborbase b/contriborbase new file mode 100644 index 0000000..9b7fd51 --- /dev/null +++ b/contriborbase @@ -0,0 +1 @@ +contribs10 diff --git a/createlinks b/createlinks new file mode 100644 index 0000000..17e56e1 --- /dev/null +++ b/createlinks @@ -0,0 +1,33 @@ +#!/usr/bin/perl -w +# This script creates the symlinks needed by this RPM +# Specific support exists to create symlinks within e-smith web "panels" +# and for links from named "events" directories into the "actions" directory +use esmith::Build::CreateLinks qw(:all); + + +#-------------------------------------------------- +# functions for manager panel +#-------------------------------------------------- +my $panel = "manager"; + +panel_link("qmh", $panel); + +#-------------------------------------------------- +# actions for console-save event: +#-------------------------------------------------- + +#-------------------------------------------------- +# actions for smeserver-qmHandle-update event: +#-------------------------------------------------- + +my $event = 'smeserver-qmHandle-update'; + +safe_symlink('restart', "root/etc/e-smith/events/$event/services2adjust/smanager"); + +event_link('navigation2-conf', "$event", '80'); +event_link('routes2-conf', "$event", '80'); +event_link('locales2-conf', "$event", '80'); + +#-------------------------------------------------- +# The End +#-------------------------------------------------- diff --git a/root/etc/e-smith/events/smeserver-qmHandle-update/.gitignore b/root/etc/e-smith/events/smeserver-qmHandle-update/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/root/etc/e-smith/locale/bg/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/bg/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..ff0ed5d --- /dev/null +++ b/root/etc/e-smith/locale/bg/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Управление на опашките на Qmail + + + OPERATION_STATUS_REPORT + Отчет за изпълнението + + + QMH_DESC + Този панел използва qmHandle за управление на опашките със съобщения на qmail. Ключови възможности са разглеждането и изтриването на отделни съобщения в опашка.

]]>
+
+ + TRY_SEND_QUEUE + Форсирай повторното изпращане на съобщенията в опашката на Qmail + + + SEND_QUEUE_AT + Изпрати повторно на съобщенията в опашката на Qmail в: + + + LIST_QUEUE + Покажи опашката със съобщения + + + LIST_LOCAL_QUEUE + Покажи локалната опашка със съобщения + + + SHOWLISTQUEUES + Покажи локалните и външните опашки на Qmail + + + LIST_REMOTE_QUEUE + Покажи външната опашка със съобщения + + + VIEW_TIME + Опашка със съобщения на Qmail, показана на: + + + LIST_LOCAL_QUEUE + Покажи локална опашка на Qmail + + + LIST_REMOTE_QUEUE + Покажи външната опашка на Qmail + + + RESEND_QUEUE + Опитай да пратиш съобщенията в опашка сега (qmail трябва да работи) + + + DELETE_MSG_TITLEB + Управление на опашката: изтриване на съобщение + + + DELETE_MESSAGE + Да изтрия ли това съобщение от опашката? (Само първите 100 реда ще се покажат) + + + DELETE + Изтрии + + + DELETED + Message deleted + + + RETURN_TO_QUEUE + Опашка за изпълнение + + + SELECT_AN_ACTION + Изберете действие + + + PERFORM + Изпълни + + + iFROM_QUEUE + от опашката със съобщения + + + Administration + Администриране + + + E-mail Warteschlange + Управление на опашките за ел. съобщения + + +
diff --git a/root/etc/e-smith/locale/da/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/da/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..77a8b94 --- /dev/null +++ b/root/etc/e-smith/locale/da/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Administrer Qmail kø + + + OPERATION_STATUS_REPORT + Status rapport + + + QMH_DESC + Denne side bruger qmHandle til at håndtere qmail besked kø. Primær funktion at kunne se og slette beskeder i køen.

]]>
+
+ + TRY_SEND_QUEUE + Udfør genfremsendelse af Qmail køen + + + SEND_QUEUE_AT + Gensend Qmail køen ved: + + + LIST_QUEUE + List besked køen + + + LIST_LOCAL_QUEUE + List lokal besked kø + + + SHOWLISTQUEUES + List Qmail lokal og fjern kø + + + LIST_REMOTE_QUEUE + List fjern besked kø + + + VIEW_TIME + Qmail kø, vist ved: + + + LIST_LOCAL_QUEUE + List lokal Qmail kø + + + LIST_REMOTE_QUEUE + List fjern Qmail kø + + + RESEND_QUEUE + Prøv at sende besked kø nu (qmail skal være aktiv) + + + DELETE_MSG_TITLEB + Kø management: Slet besked + + + DELETE_MESSAGE + Slet besked fra køen? (Det er kun de første 100 linier som er listet) + + + DELETE + Slet + + + DELETED + Besked sendt + + + RETURN_TO_QUEUE + Run queue + + + SELECT_AN_ACTION + Vælg en aktivitet + + + PERFORM + Udfør + + + iFROM_QUEUE + fra besked køen + + + Administration + Administration + + + E-mail Warteschlange + Administration af E-mail kø + + +
diff --git a/root/etc/e-smith/locale/de/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/de/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..571dfd9 --- /dev/null +++ b/root/etc/e-smith/locale/de/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail-Warteschlangen verwalten + + + OPERATION_STATUS_REPORT + Statusbericht + + + QMH_DESC + Dieses Panel verwendet qmHandle um die Qmail-Warteschlangen zu verwalten. Hauptfunktionen sind das Anzeigen und Löschen von E-Mails in diesen Warteschlangen.

]]>
+
+ + TRY_SEND_QUEUE + Erzwinge erneutes Versenden der Qmail-Warteschlange + + + SEND_QUEUE_AT + Qmail-Warteschlange erneut senden um: + + + LIST_QUEUE + Warteschlangen anzeigen + + + LIST_LOCAL_QUEUE + Lokale Warteschlange anzeigen + + + SHOWLISTQUEUES + Lokale und entfernte Qmail-Warteschlangen anzeigen + + + LIST_REMOTE_QUEUE + Entfernte Warteschlange anzeigen + + + VIEW_TIME + Qmail-Warteschlange, angezeigt um: + + + LIST_LOCAL_QUEUE + Lokale Qmail-Warteschlange anzeigen + + + LIST_REMOTE_QUEUE + Entfernte Qmail-Warteschlange anzeigen + + + RESEND_QUEUE + Versuche Nachrichten in der Warteschlange jetzt zu senden (qmail muss laufen) + + + DELETE_MSG_TITLEB + Warteschlangen-Verwaltung: Nachricht löschen + + + DELETE_MESSAGE + Diese Nachricht aus der Warteschlange löschen? (Es werden nur die ersten 100 Zeilen angezeigt) + + + DELETE + Löschen + + + DELETED + Nachricht gesendet + + + RETURN_TO_QUEUE + Run Queue + + + SELECT_AN_ACTION + Wählen Sie eine Aktion + + + PERFORM + Ausführen + + + iFROM_QUEUE + aus Warteschlange + + + Administration + Administration + + + E-mail Warteschlange + E-Mail-Warteschlangen-Verwaltung + + +
diff --git a/root/etc/e-smith/locale/el/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/el/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..2b3eba2 --- /dev/null +++ b/root/etc/e-smith/locale/el/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Αναφορά κατάστασης λειτουργίας + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Διαγραφή + + + DELETED + Μήνυμα Στάλθηκε + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Επιλέξτε κάποια ενέργεια + + + PERFORM + Εκτέλεση + + + iFROM_QUEUE + from message queue + + + Administration + Διαχείριση + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..b5bb4e7 --- /dev/null +++ b/root/etc/e-smith/locale/en-us/etc/e-smith/web/functions/qmh @@ -0,0 +1,103 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Operation status report + + + QMH_DESC + + This panel uses qmHandle to manage the qmail message queues. Key + features are the ability to view and delete messages in the queues. +

+ ]]> +
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + + Delete this message from the queue ? (Only the first 100 lines are listed) + + + + DELETE + Delete + + + DELETED + Message deleted + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Select an action + + + PERFORM + Perform + + + iFROM_QUEUE + from message queue + + + Administration + Administration + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/es/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/es/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..850c2fb --- /dev/null +++ b/root/etc/e-smith/locale/es/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Estado de la operación + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Borrar + + + DELETED + El mensaje ha sido enviado + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Seleccionar una acción + + + PERFORM + Ejecutar + + + iFROM_QUEUE + from message queue + + + Administration + Administración + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/et/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/et/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..4f02de9 --- /dev/null +++ b/root/etc/e-smith/locale/et/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Operatsiooni tulemus + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Kustuta + + + DELETED + Message deleted + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Vali toiming + + + PERFORM + Perform + + + iFROM_QUEUE + from message queue + + + Administration + Administreerimine + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..ac7f86d --- /dev/null +++ b/root/etc/e-smith/locale/fr/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Administration de file d'attente + + + OPERATION_STATUS_REPORT + Rapport d'état de l'opération + + + QMH_DESC + Ce panel utilise qmHandle pour administrer la file d'attente de Qmail. Les fonctionnalités principales sont de voir et d'effacer des messages dans la file d'attente.

]]>
+
+ + TRY_SEND_QUEUE + Forcer le renvoi de la file d'attente de qmail + + + SEND_QUEUE_AT + Renvoi la file d'attente Qmail le : + + + LIST_QUEUE + Message de la file d'attente + + + LIST_LOCAL_QUEUE + File d'attente locale + + + SHOWLISTQUEUES + Files d'attente locale et distante + + + LIST_REMOTE_QUEUE + File d'attente distante de QMAIL + + + VIEW_TIME + La file d'attente des messages de Qmail le : + + + LIST_LOCAL_QUEUE + File d'attente locale de QMAIL + + + LIST_REMOTE_QUEUE + File d'attente distante de QMAIL + + + RESEND_QUEUE + Renvoyer les messages de la file d'attente maintenant (Qmail doit être en fonction) + + + DELETE_MSG_TITLEB + Administration de file d'attente : effacer le Message + + + DELETE_MESSAGE + Effacez ce message de la file d'attente? (Seulement les 100 premières lignes sont affichées) + + + DELETE + Supprimer + + + DELETED + Message suprimé + + + RETURN_TO_QUEUE + Retour à la file d'attente + + + SELECT_AN_ACTION + Sélectionnez une action : + + + PERFORM + Exécuter + + + iFROM_QUEUE + de la file d'attente des messages + + + Administration + Administration + + + E-mail Warteschlange + Administration de file d'attente des courriels + + +
diff --git a/root/etc/e-smith/locale/he/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/he/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..918c933 --- /dev/null +++ b/root/etc/e-smith/locale/he/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Operation status report + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Delete + + + DELETED + Message deleted + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + בחר פעולה + + + PERFORM + Perform + + + iFROM_QUEUE + from message queue + + + Administration + Administration + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/hu/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/hu/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..34908f0 --- /dev/null +++ b/root/etc/e-smith/locale/hu/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Használati jelentés + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Törlés + + + DELETED + Üzenet elküldve + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Válasszon műveletet + + + PERFORM + Végrehajtás + + + iFROM_QUEUE + from message queue + + + Administration + Adminisztráció + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/id/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/id/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..647f98d --- /dev/null +++ b/root/etc/e-smith/locale/id/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Laporan status operasi + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Hapus + + + DELETED + Isi pesan + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Pilih aksi + + + PERFORM + Jalankan + + + iFROM_QUEUE + from message queue + + + Administration + Administrasi + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/it/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/it/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..e68c6cd --- /dev/null +++ b/root/etc/e-smith/locale/it/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Gestione della coda Qmail + + + OPERATION_STATUS_REPORT + Rapporto operazione + + + QMH_DESC + Il pannello utilizza qmHandle per gestire la coda dei messaggi di qmail. Per mezzo di ess è possibile visualizzare e cancellare i messaggi in coda.

]]>
+
+ + TRY_SEND_QUEUE + Forza il reinvio dei messaggi in coda. + + + SEND_QUEUE_AT + Invia nuovamente i messaggi alle: + + + LIST_QUEUE + Lista delle code di messaggi + + + LIST_LOCAL_QUEUE + Lista della coda di messaggi locale + + + SHOWLISTQUEUES + Lista delle code di messaggi locali e remote + + + LIST_REMOTE_QUEUE + Lista della coda di messaggi remota + + + VIEW_TIME + Coda messaggi qmail, visualizzata alle: + + + LIST_LOCAL_QUEUE + Lista la coda locale Qmail + + + LIST_REMOTE_QUEUE + Lista la coda remota Qmail + + + RESEND_QUEUE + Prova ad inviare adesso i messaggi in coda (qmail deve essere in esecuzione) + + + DELETE_MSG_TITLEB + Gestione coda: cancella messaggio + + + DELETE_MESSAGE + Cancello il messaggio dalla coda? (Sono visualizzate solo le prime 100 righe) + + + DELETE + Elimina + + + DELETED + Messaggio + + + RETURN_TO_QUEUE + Coda di esecuzione + + + SELECT_AN_ACTION + Selezionare un'azione + + + PERFORM + Esegui + + + iFROM_QUEUE + dalla coda messaggi + + + Administration + Amministrazione + + + E-mail Warteschlange + Gestione della coda e-mail + + +
diff --git a/root/etc/e-smith/locale/ja/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/ja/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..e8da666 --- /dev/null +++ b/root/etc/e-smith/locale/ja/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Operation status report + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + 削除 + + + DELETED + メッセージを送信します + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + 実行する作業を指定してください + + + PERFORM + Perform + + + iFROM_QUEUE + from message queue + + + Administration + 管理 + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/nb/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/nb/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..15e08cb --- /dev/null +++ b/root/etc/e-smith/locale/nb/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Statusrapport for operasjonen + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Slett + + + DELETED + Melding + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Velg en aktivitet + + + PERFORM + Utfør + + + iFROM_QUEUE + from message queue + + + Administration + Administrasjon + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/nl/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/nl/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..c4aae6d --- /dev/null +++ b/root/etc/e-smith/locale/nl/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail wachtrij beheer + + + OPERATION_STATUS_REPORT + Operationeel status rapport + + + QMH_DESC + Dit paneel gebruikt qmHandle voor het afhandelen van de qmail berichten wachtrij. Hoofdfuncties is de mogelijkheid om berichten die in de wachtrij staan te bekijken en te verwijderen.

]]>
+
+ + TRY_SEND_QUEUE + Forceer het herverzenden van berichten in Qmail wachtrij + + + SEND_QUEUE_AT + Herverzend wachtrij berichten om: + + + LIST_QUEUE + Bekijk wachtrij berichten + + + LIST_LOCAL_QUEUE + Bekijk lokale wachtrij berichten + + + SHOWLISTQUEUES + Bekijk Qmail wachtrijen voor lokale en uitgaande berichten + + + LIST_REMOTE_QUEUE + Bekijk wachtrij voor uitgaande berichten + + + VIEW_TIME + Qmail berichten wachtrij, bekeken op: + + + LIST_LOCAL_QUEUE + Bekijk lokale Qmail wachtrij + + + LIST_REMOTE_QUEUE + Bekijk uitgaande Qmail wachtrij + + + RESEND_QUEUE + Probeer nu om wachtrij berichten te verzenden (qmail moet hiervoor actief zijn) + + + DELETE_MSG_TITLEB + Wachtrij beheer: Bericht verwijderen + + + DELETE_MESSAGE + Dit bericht verwijderen van de wachtrij? (Alleen de eerste 100 regels zijn getoond) + + + DELETE + Verwijderen + + + DELETED + Bericht verzonden + + + RETURN_TO_QUEUE + Run queue + + + SELECT_AN_ACTION + Selecteer een actie + + + PERFORM + Uitvoeren + + + iFROM_QUEUE + van berichten wachtrij + + + Administration + Beheer + + + E-mail Warteschlange + E-Mail wachtrij beheer + + +
diff --git a/root/etc/e-smith/locale/pl/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/pl/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..0421a50 --- /dev/null +++ b/root/etc/e-smith/locale/pl/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Raport o stanie procesu + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Usuń + + + DELETED + Wiadomość została wysłana + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Wybierz akcję + + + PERFORM + Perform + + + iFROM_QUEUE + from message queue + + + Administration + Administracja + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/pt-br/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/pt-br/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..62aba1a --- /dev/null +++ b/root/etc/e-smith/locale/pt-br/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Gerenciamento de fila do Qmail + + + OPERATION_STATUS_REPORT + Relatório de status da operação + + + QMH_DESC + Este painel usa qmHandle para gerenciar as filas de mensagens do qmail. As principais características são a habilidade de ver e deletar mensagens nas filas.

]]>
+
+ + TRY_SEND_QUEUE + Forçar reenvio da fila do Qmail + + + SEND_QUEUE_AT + Reenviar a fila do Qmail as: + + + LIST_QUEUE + Listar filas de mensagens + + + LIST_LOCAL_QUEUE + Listar fila de mensagens local + + + SHOWLISTQUEUES + Listar filas remota e local do Qmail + + + LIST_REMOTE_QUEUE + Lista fila de mensagens remota + + + VIEW_TIME + Fila de mensagem do Qmail, visto as: + + + LIST_LOCAL_QUEUE + Listar fila local do Qmail + + + LIST_REMOTE_QUEUE + Lista lista remota do Qmail + + + RESEND_QUEUE + Tentar enviar as mensagens enfileiradas agora (Qmail deve estar rodando) + + + DELETE_MSG_TITLEB + Gerenciamento da fila: excluir a mensagem + + + DELETE_MESSAGE + Apagar esta mensagem da fila ? (Somente as primeiras 100 linhas são mostradas) + + + DELETE + Excluir + + + DELETED + Mensagem + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Selecionar uma ação + + + PERFORM + Executar + + + iFROM_QUEUE + da fila de mensagens + + + Administration + Administração + + + E-mail Warteschlange + Gerenciamento das filas de e-mail + + +
diff --git a/root/etc/e-smith/locale/pt/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/pt/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..5303506 --- /dev/null +++ b/root/etc/e-smith/locale/pt/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Relarório de status de operação + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Apagar + + + DELETED + Mensagem + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Selecionar uma ação + + + PERFORM + Executar + + + iFROM_QUEUE + from message queue + + + Administration + Administração + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/ro/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/ro/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..49395e9 --- /dev/null +++ b/root/etc/e-smith/locale/ro/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Gestionarea cozii de mailuri + + + OPERATION_STATUS_REPORT + Raport operațiune + + + QMH_DESC + Acest panou utilizează qmHandle pentru a gestiona coada de mailuri. Importante sunt posibilitatea de a viedea si a sterge mesajele din coada de așteptare.

]]>
+
+ + TRY_SEND_QUEUE + Forțează retrimiterea mailurilro din coadă + + + SEND_QUEUE_AT + Retrimite coada la ora: + + + LIST_QUEUE + Listează mesajele din coadă + + + LIST_LOCAL_QUEUE + Listează doar mesajele cu destinatar local din coadă + + + SHOWLISTQUEUES + Listează mesajele cu destinatari locali sau distanți + + + LIST_REMOTE_QUEUE + Listează doar mesajele cu destinatar distant din coadă + + + VIEW_TIME + Coadă de mesaje vizualizată la: + + + LIST_LOCAL_QUEUE + Listeaza coada locală + + + LIST_REMOTE_QUEUE + Listează coada distantă + + + RESEND_QUEUE + Incearcă retrimiterea mesajelor acum (qmail trebuei sa fie pornit) + + + DELETE_MSG_TITLEB + Gestionarea cozii de mesaje: sterge mesaje + + + DELETE_MESSAGE + Stergeți acest mesaj din coada? (Numai primele 100 linii sunt listate) + + + DELETE + Şterge + + + DELETED + Mesaj trimis + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Selectati o actiune + + + PERFORM + Execută + + + iFROM_QUEUE + din coada de mesje + + + Administration + Administrația + + + E-mail Warteschlange + Gestionarea cozii de E-mailuri + + +
diff --git a/root/etc/e-smith/locale/ru/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/ru/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..2034979 --- /dev/null +++ b/root/etc/e-smith/locale/ru/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Данные о состоянии функционирования + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Удалить + + + DELETED + Сообщение послано + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Выберите действие + + + PERFORM + Выполнить + + + iFROM_QUEUE + from message queue + + + Administration + Администрирование + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/sl/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/sl/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..90ca676 --- /dev/null +++ b/root/etc/e-smith/locale/sl/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Porocilo o delovanju + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Izbriši + + + DELETED + Sporočilo je poslano + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + Izberite ukrep + + + PERFORM + Izvedi + + + iFROM_QUEUE + from message queue + + + Administration + Administracija + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/sv/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/sv/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..7eb9bab --- /dev/null +++ b/root/etc/e-smith/locale/sv/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + Statusrapport över operationerna + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Radera + + + DELETED + Meddelandet skickades + + + RETURN_TO_QUEUE + Körningskö + + + SELECT_AN_ACTION + Välj en åtgärd + + + PERFORM + Verkställ + + + iFROM_QUEUE + from message queue + + + Administration + Administration + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/th/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/th/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..402de83 --- /dev/null +++ b/root/etc/e-smith/locale/th/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + รายงานสถานะการทำงาน + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + ลบ + + + DELETED + ข้อความ + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + เลือกดำเนินการอย่างใดอย่างหนึ่ง + + + PERFORM + ดำเนินงาน + + + iFROM_QUEUE + from message queue + + + Administration + การบริหาร + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/tr/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/tr/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..32047d3 --- /dev/null +++ b/root/etc/e-smith/locale/tr/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + İşlem durum raporu + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + Sil + + + DELETED + İleti Gönderildi + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + İşlemi seçin + + + PERFORM + Uygula + + + iFROM_QUEUE + from message queue + + + Administration + Yönetim + + + E-mail Warteschlange + E-Mail queue management + + +
diff --git a/root/etc/e-smith/locale/zh-cn/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/zh-cn/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..4ab3374 --- /dev/null +++ b/root/etc/e-smith/locale/zh-cn/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail queue management + + + OPERATION_STATUS_REPORT + 操作报告 + + + QMH_DESC + This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.

]]>
+
+ + TRY_SEND_QUEUE + Force resending of the Qmail queue + + + SEND_QUEUE_AT + Resend Qmail queue at: + + + LIST_QUEUE + List message queues + + + LIST_LOCAL_QUEUE + List local message queue + + + SHOWLISTQUEUES + List Qmail local and remote queues + + + LIST_REMOTE_QUEUE + List remote message queue + + + VIEW_TIME + Qmail message queue, viewed at: + + + LIST_LOCAL_QUEUE + List Qmail local queue + + + LIST_REMOTE_QUEUE + List Qmail remote queue + + + RESEND_QUEUE + Try to send queued messages now (qmail must be running) + + + DELETE_MSG_TITLEB + Queue management: delete Message + + + DELETE_MESSAGE + Delete this message from the queue ? (Only the first 100 lines are listed) + + + DELETE + 删除 + + + DELETED + 已发送消息 + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + 选择一个动作 + + + PERFORM + 执行 + + + iFROM_QUEUE + from message queue + + + Administration + 管理 + + + E-mail Warteschlange + 邮件队列管理 + + +
diff --git a/root/etc/e-smith/locale/zh-tw/etc/e-smith/web/functions/qmh b/root/etc/e-smith/locale/zh-tw/etc/e-smith/web/functions/qmh new file mode 100644 index 0000000..5cf530c --- /dev/null +++ b/root/etc/e-smith/locale/zh-tw/etc/e-smith/web/functions/qmh @@ -0,0 +1,95 @@ + + + QMH_TITLE + Qmail駐列管理 + + + OPERATION_STATUS_REPORT + 運作狀態回報 + + + QMH_DESC + 此控制台使用qmHandle來管理qmail的訊息駐列。關鍵功能在於有能力去檢視與刪除駐列中的訊息。

]]>
+
+ + TRY_SEND_QUEUE + 強迫重新傳送Qmail駐列。 + + + SEND_QUEUE_AT + 重新傳送Qmail駐列於: + + + LIST_QUEUE + 列出訊息駐列 + + + LIST_LOCAL_QUEUE + 列出本地端訊息駐列 + + + SHOWLISTQUEUES + 列出Qmail的本地端與遠端駐列 + + + LIST_REMOTE_QUEUE + 列出遠端訊息駐列 + + + VIEW_TIME + Qmail的訊息駐列,被檢視於: + + + LIST_LOCAL_QUEUE + 列出Qmail本地端駐列 + + + LIST_REMOTE_QUEUE + 列出Qmail遠端駐列 + + + RESEND_QUEUE + 當下嘗試傳送駐列訊息(qmail必須正在執行) + + + DELETE_MSG_TITLEB + 駐列管理:刪除訊息 + + + DELETE_MESSAGE + 從駐列中刪除此訊息?(僅列出前100行) + + + DELETE + 刪除 + + + DELETED + 訊息已送出 + + + RETURN_TO_QUEUE + Return to queue + + + SELECT_AN_ACTION + 選擇一項操作 + + + PERFORM + 效能 + + + iFROM_QUEUE + 從訊息駐列 + + + Administration + 管理 + + + E-mail Warteschlange + 電郵駐列管理 + + +
diff --git a/root/etc/e-smith/web/functions/qmh b/root/etc/e-smith/web/functions/qmh new file mode 100755 index 0000000..4cd923d --- /dev/null +++ b/root/etc/e-smith/web/functions/qmh @@ -0,0 +1,638 @@ +#!/usr/bin/perl -wT +#---------------------------------------------------------------------- +# heading : Administration +# description : E-mail Warteschlange +# navigation : 5000 5100 +# Copyright (C) 2005/2008 Peter Schubert, SACO Software and Consulting GmbH +#---------------------------------------------------------------------- +use strict; +use esmith::FormMagick; +use esmith::ConfigDB; +use esmith::AccountsDB; +use esmith::config; +use esmith::cgi; +use esmith::util; +use esmith::lockfile; + +my $fm = esmith::FormMagick->new(); + +use CGI; +$CGI::POST_MAX = -1; +$CGI::DISABLE_UPLOADS = 0; +$fm->{cgi} = CGI->new(); + +$fm->parse_xml(); + +my $conf = esmith::ConfigDB->open() + || die $fm->localise('CANNOT_OPEN').'/home/e-smith/configuration'; + +# We need this hash for some esmith::cgi calls, so... +tie my %conf, 'esmith::config', $conf->file; + +# Unbuffer standard output so that files and directories are listed as +# they are restored +$| = 1; + +# Store away current gid of 'www' group. +my $www_gid = getgrnam("www"); + +#------------------------------------------------------------ +# examine state parameter and display the appropriate form +#------------------------------------------------------------ + +my $q = $fm->{cgi}; + +if (! grep (/^state$/, $q->param)) +{ + showInitial ($q, ''); +} +elsif ($q->param ('state') eq "perform") +{ + performAndShowResult ($q); +} +else +{ + esmith::cgi::genStateError ($q, \%conf); +} + +exit (0); + +#------------------------------------------------------------ +# subroutine to display initial form +#------------------------------------------------------------ + +sub showInitial +{ + my ($q, $msg) = @_; + + if ($msg eq '') + { + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + $fm->localise('QMH_TITLE')); + } + else + { + esmith::cgi::genHeaderNonCacheable + ($q, \%conf, $fm->localise('OPERATION_STATUS_REPORT')); + + print $q->div ({-class => "sme-error"}, $msg); + print $q->hr; + } + + # Hack to evaluate embedded vars + print eval 'return "'.$fm->localise('QMH_DESC').'\n";'; + + my %labels = ( + "list-queues" => $fm->localise('LIST_QUEUE'), + "list-local-queue" => $fm->localise('LIST_LOCAL_QUEUE'), + "list-remote-queue" => $fm->localise('LIST_REMOTE_QUEUE'), + "resend" => $fm->localise('RESEND_QUEUE'), + ); + + my @labels = ( + 'list-queues', + 'list-local-queue', + 'list-remote-queue', + 'resend', + ); + + my $altqmail=$conf->get('altqmail') || 0; + if ( $altqmail) + { + %labels = ( + "list-queues" => $fm->localise('LIST_QUEUE'), + "list-local-queue" => $fm->localise('LIST_LOCAL_QUEUE'), + "list-remote-queue" => $fm->localise('LIST_REMOTE_QUEUE'), + "resend" => $fm->localise('RESEND_QUEUE'), + "alt-list-queues" => "altqmail: ". $fm->localise('LIST_QUEUE'), + "alt-list-local-queue" => "altqmail: ". $fm->localise('LIST_LOCAL_QUEUE'), + "alt-list-remote-queue" => "altqmail: ". $fm->localise('LIST_REMOTE_QUEUE'), + "alt-resend" => "altqmail: ". $fm->localise('RESEND_QUEUE'), + ); + + @labels = ( + 'list-queues', + 'list-local-queue', + 'list-remote-queue', + 'resend', + 'alt-list-queues', + 'alt-list-local-queue', + 'alt-list-remote-queue', + 'alt-resend', + ); + + } + + my $default_action = 'list-queues'; + + print $q->startform( + -method => 'POST', + -action => $q->url (-absolute => 1) + ),"\n"; + + print $q->start_table ({-class => "sme-noborders"}),"\n"; + + print $q->Tr( + $q->td({-class => "sme-noborders-label"}, + $fm->localise("SELECT_AN_ACTION")), + $q->td({-class => "sme-noborders-content"}, + $q->popup_menu ( + -name => 'function', + -values => [ @labels ], + -default => $default_action, + -labels => \%labels + ) + ) + ),"\n"; + + + print $q->end_table,"\n"; + + print $q->start_table ({width => "100%", -class => "sme-noborders"}), + "\n"; + + print esmith::cgi::genButtonRow( + $q, + $q->submit (-name => 'action', -value => + $fm->localise('PERFORM')) + ); + + print $q->end_table,"\n"; + + print $q->hidden ( + -name => 'state', + -override => 1, + -default => 'perform' + ),"\n"; + + print $q->endform,"\n"; + + esmith::cgi::genFooter($fm); + + return; +} + +sub performAndShowResult +{ + my ($q) = @_; + + my $function = $q->param ('function'); + + if ($function eq 'refresh') + { + showInitial ($q, ''); + } + elsif ($function eq 'list-queues') + { + showListQueues ($q); + } + elsif ($function eq 'list-local-queue') + { + showListLocalQueue ($q); + } + elsif ($function eq 'list-remote-queue') + { + showListRemoteQueue ($q); + } + elsif ($function eq 'resend') + { + resend($q); + } + elsif ($function eq 'confirm-delete-message-number') + { + showDeleteMessageNumber ($q); + } + elsif ($function eq 'delete-message-number') + { + deleteMessageNumber($q); + } + + elsif ($function eq 'alt-list-queues') + { + showListAltQueues ($q); + } + elsif ($function eq 'alt-list-local-queue') + { + showListLocalAltQueue ($q); + } + elsif ($function eq 'alt-list-remote-queue') + { + showListRemoteAltQueue ($q); + } + elsif ($function eq 'alt-resend') + { + Altresend($q); + } + elsif ($function eq 'alt-confirm-delete-message-number') + { + showDeleteAltMessageNumber ($q); + } + elsif ($function eq 'alt-delete-message-number') + { + deleteAltMessageNumber($q); + } + + else + { + # Unknown function - refresh the screen anyway + showInitial ($q, 'unknown'); + } + + return; + + print $q->p ( $function ); + esmith::cgi::genFooter($fm); +} + +#------------------------------------------------------------ +# subroutine to showListQueues +#------------------------------------------------------------ +sub showListQueues ($) +{ + my ($q) = @_; + + + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + $fm->localise('SHOWLISTQUEUES')); + + { + print $q->hr; + print $q->p($fm->localise('VIEW_TIME')),scalar localtime(time),"\n"; + + my $MailQueues = `/usr/bin/qmHandle -l`; + my $queuetype = 'list-queues'; + + $MailQueues =~ s//'/g; + + $MailQueues = AddLinks($MailQueues, $queuetype, $q); + + print $q->p ($q->pre ("$MailQueues")); + } + + esmith::cgi::genFooter($fm); + return; +} + +sub showListAltQueues ($) +{ + my ($q) = @_; + + + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + "altqmail: ". $fm->localise('SHOWLISTQUEUES')); + + { + print $q->hr; + print $q->p($fm->localise('VIEW_TIME')),scalar localtime(time),"\n"; + + my $MailQueues = `/usr/bin/qmHandle -X -l`; + my $queuetype = 'alt-list-queues'; + + $MailQueues =~ s//'/g; + + $MailQueues = AddAltLinks($MailQueues, $queuetype, $q); + + print $q->p ($q->pre ("$MailQueues")); + } + + esmith::cgi::genFooter($fm); + return; +} + +sub AddLinks +{ + my $queues = shift; + my $queueType = shift; + + my @splitq = split(/\n/, $queues); + + for (my $i = 0; $i < $#splitq; $i++) { + if ($splitq[$i] =~ /^(\d+)\s+(\(\d+\,\s+\d+\/+\d+\)\s*)$/ ) { + $splitq[$i] = "url( -absolute => 1 ) . + "?state=perform&function=confirm-delete-message-number&queue=$queueType" . + "&msgid=$1\">$1 $2"; + } + } + $queues = join("\n", @splitq); + + return $queues; +} + +sub AddAltLinks +{ + my $queues = shift; + my $queueType = shift; + + my @splitq = split(/\n/, $queues); + + for (my $i = 0; $i < $#splitq; $i++) { + if ($splitq[$i] =~ /^(\d+)\s+(\(\d+\,\s+\d+\/+\d+\)\s*)$/ ) { + $splitq[$i] = "url( -absolute => 1 ) . + "?state=perform&function=alt-confirm-delete-message-number&queue=$queueType" . + "&msgid=$1\">$1 $2"; + } + } + $queues = join("\n", @splitq); + + return $queues; +} + + +#------------------------------------------------------------ +# subroutine to showListLocalQueue +#------------------------------------------------------------ +sub showListLocalQueue ($) +{ + my ($q) = @_; + + + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + $fm->localise('LIST_LOCAL_QUEUE')); + { + print $q->hr; + print $q->p($fm->localise('VIEW_TIME')),scalar localtime(time),"\n"; + my $LocalQueue = `/usr/bin/qmHandle -L`; + my $queuetype = 'list-local-queue'; + + $LocalQueue =~ s//'/g; + $LocalQueue = AddLinks($LocalQueue, $queuetype); + + print $q->p ($q->pre ("$LocalQueue")); + } + + esmith::cgi::genFooter($fm); + return; +} + +sub showListLocalAltQueue ($) +{ + my ($q) = @_; + + + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + "altqmail: ". $fm->localise('LIST_LOCAL_QUEUE')); + { + print $q->hr; + print $q->p($fm->localise('VIEW_TIME')),scalar localtime(time),"\n"; + my $LocalQueue = `/usr/bin/qmHandle -X -L`; + my $queuetype = 'alt-list-local-queue'; + + $LocalQueue =~ s//'/g; + $LocalQueue = AddAltLinks($LocalQueue, $queuetype); + + print $q->p ($q->pre ("$LocalQueue")); + } + + esmith::cgi::genFooter($fm); + return; +} + + +#------------------------------------------------------------ +# subroutine to showListRemoteQueue +#------------------------------------------------------------ +sub showListRemoteQueue ($) +{ + my ($q) = @_; + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + $fm->localise('LIST_REMOTE_QUEUE')); + + { + print $q->hr; + print $q->p($fm->localise('VIEW_TIME')),scalar localtime(time),"\n"; + + my $RemoteQueue = `/usr/bin/qmHandle -R`; + my $queuetype = 'list-remote-queue'; + + $RemoteQueue =~ s//'/g; + + $RemoteQueue = AddLinks($RemoteQueue, $queuetype); + print $q->p ($q->pre ("$RemoteQueue")); + } + + esmith::cgi::genFooter($fm); + return; +} + +sub showListRemoteAltQueue ($) +{ + my ($q) = @_; + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + "altqmail: ". $fm->localise('LIST_REMOTE_QUEUE')); + + { + print $q->hr; + print $q->p($fm->localise('VIEW_TIME')),scalar localtime(time),"\n"; + + my $RemoteQueue = `/usr/bin/qmHandle -X -R`; + my $queuetype = 'alt-list-remote-queue'; + + $RemoteQueue =~ s//'/g; + + $RemoteQueue = AddAltLinks($RemoteQueue, $queuetype); + print $q->p ($q->pre ("$RemoteQueue")); + } + + esmith::cgi::genFooter($fm); + return; +} + + +#------------------------------------------------------------ +# subroutine to send ALARM to qmail +#------------------------------------------------------------ +sub resend ($) +{ + my ($q) = @_; + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + $fm->localise('TRY_SEND_QUEUE')); + + { + print $q->hr; + print $q->p($fm->localise('SEND_QUEUE_AT')),scalar localtime(time),"\n"; + + my $res = `/usr/bin/qmHandle -a`; + + print $q->p ($q->pre ("$res")); + print $q->h3 ("Done."); + } + + esmith::cgi::genFooter($fm); + return; +} + +sub Altresend ($) +{ + my ($q) = @_; + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + "altqmail: ". $fm->localise('TRY_SEND_QUEUE')); + + { + print $q->hr; + print $q->p($fm->localise('SEND_QUEUE_AT')),scalar localtime(time),"\n"; + + my $res = `/usr/bin/qmHandle -X -a`; + + print $q->p ($q->pre ("$res")); + print $q->h3 ("Done."); + } + + esmith::cgi::genFooter($fm); + return; +} + +#------------------------------------------------------------ +# subroutine to showDeleteMessageNumber +#------------------------------------------------------------ +sub showDeleteMessageNumber ($) +{ + my ($q) = @_; + my $msgid = $q->param ('msgid'); + my $queuetype = $q->param ('queue'); + + if ($msgid =~ /^(\d+)$/) { + $msgid = $1; + } else { + $msgid = undef; + } + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + $fm->localise('DELETE_MSG_TITLEB')); + + print $q->hr; + print $q->p($fm->localise('DELETE_MESSAGE')),"\n"; + my $Message = `/usr/bin/qmHandle -m$msgid|head -100`; + print $q->textarea (-name => 'message', -override => 1, -default => "$Message", -rows => 30, -cols => 80); + + print $q->start_multipart_form(-method => 'POST', -action => $q->url (-absolute => 1)); + print $q->table ({border => 0, cellspacing => 0, cellpadding => 4}, + + esmith::cgi::genButtonRow ($q, + $q->submit (-name => 'action', -value => $fm->localise('Delete')))); + print $q->hidden (-name => 'state', -override => 1, -default => 'perform'); + print $q->hidden (-name => 'msgid', -override => 1, -default => "$msgid"); + print $q->hidden (-name => 'function', -override => 1, -default => 'delete-message-number'); + print $q->hidden (-name => 'queue', -override => 1, -default => "$queuetype"); + print $q->endform; + + esmith::cgi::genFooter ($q); + return; +} + +sub showDeleteAltMessageNumber ($) +{ + my ($q) = @_; + my $msgid = $q->param ('msgid'); + my $queuetype = $q->param ('queue'); + + if ($msgid =~ /^(\d+)$/) { + $msgid = $1; + } else { + $msgid = undef; + } + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + "altqmail: ". $fm->localise('DELETE_MSG_TITLEB')); + + print $q->hr; + print $q->p($fm->localise('DELETE_MESSAGE')),"\n"; + my $Message = `/usr/bin/qmHandle -X -m$msgid|head -100`; + print $q->textarea (-name => 'message', -override => 1, -default => "$Message", -rows => 30, -cols => 80); + + print $q->start_multipart_form(-method => 'POST', -action => $q->url (-absolute => 1)); + print $q->table ({border => 0, cellspacing => 0, cellpadding => 4}, + + esmith::cgi::genButtonRow ($q, + $q->submit (-name => 'action', -value => $fm->localise('Delete')))); + + print $q->hidden (-name => 'state', -override => 1, -default => 'perform'); + print $q->hidden (-name => 'msgid', -override => 1, -default => "$msgid"); + print $q->hidden (-name => 'function', -override => 1, -default => 'delete-message-number'); + print $q->hidden (-name => 'queue', -override => 1, -default => "$queuetype"); + print $q->endform; + + esmith::cgi::genFooter ($q); + return; +} + + +sub deleteMessageNumber ($) +{ + my ($q) = @_; + + my $msgid = $q->param ('msgid'); + my $queuetype = $q->param ('queue'); + + if ($msgid =~ /^(\d+)$/) { + $msgid = $1; + } else { + $msgid = undef; + } + my $Output = `/usr/bin/qmHandle -d$msgid`; + + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + "qmail: ". $fm->localise('QMH_TITLE')); + + print $q->hr; + print $q->h3 ($fm->localise('DELETED'))," $msgid "; + print $q->br(); + print $q->br(); + + print $q->start_multipart_form(-method => 'POST', -action => $q->url (-absolute => 1)); + print $q->table ({border => 0, cellspacing => 0, cellpadding => 4}, + esmith::cgi::genButtonRow ($q, + $q->submit (-name => 'action', -value => $fm->localise('RETURN_TO_QUEUE')))); + + print $q->hidden (-name => 'state', -override => 1, -default => 'perform'); + print $q->hidden (-name => 'function', -override => 1, -default => "$queuetype"); + print $q->endform; + + esmith::cgi::genFooter ($q); + return; +} + +sub deleteAltMessageNumber ($) +{ + my ($q) = @_; + + my $msgid = $q->param ('msgid'); + my $queuetype = $q->param ('queue'); + + if ($msgid =~ /^(\d+)$/) { + $msgid = $1; + } else { + $msgid = undef; + } + my $Output = `/usr/bin/qmHandle -X -d$msgid`; + + esmith::cgi::genHeaderNonCacheable ($q, \%conf, + "altqmail: ". $fm->localise('QMH_TITLE')); + + print $q->hr; + print $q->h3 ($fm->localise('DELETED'))," $msgid "; + print $q->br(); + print $q->br(); + + print $q->start_multipart_form(-method => 'POST', -action => $q->url (-absolute => 1)); + print $q->table ({border => 0, cellspacing => 0, cellpadding => 4}, + esmith::cgi::genButtonRow ($q, + $q->submit (-name => 'action', -value => $fm->localise('RETURN_TO_QUEUE')))); + + print $q->hidden (-name => 'state', -override => 1, -default => 'perform'); + print $q->hidden (-name => 'function', -override => 1, -default => "$queuetype"); + print $q->endform; + + esmith::cgi::genFooter ($q); + return; +} + + +__DATA__ +
+
diff --git a/root/etc/e-smith/web/panels/manager/cgi-bin/.gitignore b/root/etc/e-smith/web/panels/manager/cgi-bin/.gitignore new file mode 100644 index 0000000..e69de29 diff --git a/root/usr/bin/qmHandle b/root/usr/bin/qmHandle new file mode 100755 index 0000000..a2885c2 --- /dev/null +++ b/root/usr/bin/qmHandle @@ -0,0 +1,868 @@ +#!/usr/bin/perl +# +# qmHandle +# +# Copyright(c) 1998 -> 2003 Michele Beltrame +# +# This program is distributed under the GNU GPL. +# For more information have a look at http://www.gnu.org + +use strict; +use warnings; +use diagnostics; + +my $version = '1.3.2'; + +#################### USER CONFIGURATION BEGIN #################### + +##### +# Set this to your qmail queue directory (be sure to include the final slash!) +my ($queue) = '/var/qmail/queue/'; +my ($bigtodo) = (-d "${queue}todo/0") ? 0 : 1; # 1 means no big-todo + +my ($altqueue) = '/var/service/altqmail/root/var/qmail/queue/'; +my ($altbigtodo) = (-d "${altqueue}todo/0") ? 0 : 1; # 1 means no big-todo + +##### +# If your system has got automated command to start/stop qmail, then +# enter them here. +# ### Be sure to uncomment only ONE of each variable declarations ### + +# For instance, this is if you have DJB's daemontools +#my ($stopqmail) = '/usr/local/bin/svc -d /service/qmail'; +#my ($startqmail) = '/usr/local/bin/svc -u /service/qmail'; + +# For SME server 10 we now use systemd +my ($stopqmail) = '/usr/bin/systemctl stop qmail.service'; +my ($startqmail) = '/usr/bin/systemctl start qmail.service'; + +my ($stopaltqmail) = '/usr/bin/systemctl stop altqmail.service'; +my ($startaltqmail) = '/usr/bin/systemctl start altqmail.service'; + +# While this is if you have a Debian GNU/Linux with its qmail package +#my ($stopqmail) = '/etc/init.d/qmail stop'; +#my ($startqmail) = '/etc/init.d/qmail start'; + +# If you don't have scripts, leave $stopqmail blank (the process will +# be hunted and killed by qmHandle): +#my ($stopqmail) = ''; + +# However, you still need to launch qmail in a way or the other. So, +# if you have a standard qmail 1.03 use this: +#my ($startqmail) = "csh -cf '/var/qmail/rc &'"; + +# While, if you have a standard qmail < 1.03 you should use this: +#my ($startqmail) = '/var/qmail/bin/qmail-start ./Mailbox splogger qmail &'; + +##### +# Enter here the system command which returns qmail PID. The following +# should work on most Unixes: +#my ($pidcmd) = 'pidof qmail-send'; +my ($pidcmd) = '/sbin/pidof /var/qmail/bin/qmail-send'; +my ($altpidcmd) = '/sbin/pidof /var/service/alqmail/root/var/qmail/bin/qmail-send'; + +#################### USER CONFIGURATION END #################### + +# Print usage if no arguments +if ($#ARGV == -1) { + &Usage(); +} + +# Get command line options + +my ($cmsg, $cstat, $cend) = ('', '', ''); +my $summary = 0; +my @actions = (); +my $dactions = 0; + +foreach my $arg (@ARGV) { + SWITCH: { + $arg eq '-X' and do { $queue=$altqueue; $bigtodo =$altbigtodo; $stopqmail=$stopaltqmail; $startqmail=$startaltqmail; $pidcmd=$altpidcmd; last SWITCH; }; + $arg eq '-a' and do { push @actions, [\&SendMsgs]; last SWITCH; }; + $arg eq '-l' and do { push @actions, [\&ListMsg, 'A']; last SWITCH; }; + $arg eq '-L' and do { push @actions, [\&ListMsg, 'L']; last SWITCH; }; + $arg eq '-R' and do { push @actions, [\&ListMsg, 'R']; last SWITCH; }; + $arg eq '-N' and do { $summary = 1; last SWITCH; }; + $arg eq '-c' and do { ($cmsg, $cstat, $cend) = ("\e[01;34m", "\e[01;31m", "\e[00m"); last SWITCH; }; + $arg eq '-s' and do { push @actions, [\&Stats]; last SWITCH; }; + $arg =~ /^-m(.+)/ and do { push @actions, [\&ViewMsg, $1]; last SWITCH; }; + $arg =~ /^-f(.+)/ and do { push @actions, [\&DelMsgFromSender, $1]; $dactions++; last SWITCH; }; + $arg =~ /^-F(.+)/ and do { push @actions, [\&DelMsgFromSenderR, $1]; $dactions++; last SWITCH; }; + $arg =~ /^-d(.+)/ and do { push @actions, [\&DelMsg, $1]; $dactions++; last SWITCH; }; + $arg =~ /^-S(.+)/ and do { push @actions, [\&DelMsgSubj, $1]; $dactions++; last SWITCH; }; + $arg =~ /^-h(.+)/ and do { push @actions, [\&DelMsgHeaderR, 'I', $1]; $dactions++; last SWITCH; }; + $arg =~ /^-b(.+)/ and do { push @actions, [\&DelMsgBodyR, 'I', $1]; $dactions++; last SWITCH; }; + $arg =~ /^-H(.+)/ and do { push @actions, [\&DelMsgHeaderR, 'C', $1]; $dactions++; last SWITCH; }; + $arg =~ /^-B(.+)/ and do { push @actions, [\&DelMsgBodyR, 'C', $1]; $dactions++; last SWITCH; }; + $arg =~ /^-t(.+)/ and do { push @actions, [\&FlagRemote, $1]; last SWITCH; }; + $arg eq '-D' and do { push @actions, [\&DelAll]; $dactions++; last SWITCH; }; + $arg eq '-V' and do { push @actions, [\&Version]; last SWITCH; }; + Usage(); + } +} + +# Set "global" variables +my ($norestart) = 0; +my (@todel) = (); +my (@toflag) = (); +my ($dmes) = 0; + +# Create a hash of messages in queue and the type of recipients they have and whether they are bouncing. +my (%msglist) = (); +my (%todohash) = (); +my (%bouncehash) = (); +my ($dirno, $msgno); + opendir(DIR,"${queue}mess"); + my (@dirlist) = grep !/\./, readdir DIR; + closedir DIR; + opendir(DIR,"${queue}todo"); + my (@todolist) = grep !/\./, readdir DIR; + closedir DIR; + if ($bigtodo == 0) { + foreach my $tododir (@todolist) { + opendir (SUBDIR,"${queue}todo/$tododir"); + my (@todofiles) = grep !/\./, map "$tododir/$_", readdir SUBDIR; + foreach my $todofile (@todofiles) { + $msglist{ $todofile }{ 'todo' } = $todofile; + } + } + } else { + foreach my $todofile (@todolist) { + $todohash{$todofile} = $todofile; + } + } + opendir(DIR,"${queue}bounce"); + my (@bouncelist) = grep !/\./, readdir DIR; + closedir DIR; + foreach my $bouncefile (@bouncelist) { + $bouncehash{$bouncefile} = 'B'; + } + foreach my $dir (@dirlist) { + opendir (SUBDIR,"${queue}mess/$dir"); + my (@files) = grep !/\./, map "$dir/$_", readdir SUBDIR; + opendir (INFOSUBDIR,"${queue}info/$dir"); + my (@infofiles) = grep !/\./, map "$dir/$_", readdir INFOSUBDIR; + opendir (LOCALSUBDIR,"${queue}local/$dir"); + my (@localfiles) = grep !/\./, map "$dir/$_", readdir LOCALSUBDIR; + opendir (REMOTESUBDIR,"${queue}remote/$dir"); + my (@remotefiles) = grep !/\./, map "$dir/$_", readdir REMOTESUBDIR; + foreach my $infofile (@infofiles) { + $msglist{$infofile}{'sender'} = 'S'; + } + foreach my $localfile (@localfiles) { + $msglist{$localfile}{'local'} = 'L'; + } + foreach my $remotefile (@remotefiles) { + $msglist{$remotefile}{'remote'} = 'R'; + } + foreach my $file (@files) { + ($dirno, $msgno) = split(/\//, $file); + if ($bouncehash{$msgno}) { + $msglist{ $file }{ 'bounce' } = 'B'; + } + if ($bigtodo == 1) { + if ($todohash{$msgno}) { + $msglist{ $file }{ 'todo' } = "$msgno"; + } + } + } + closedir SUBDIR; + closedir INFOSUBDIR; + closedir LOCALSUBDIR; + closedir REMOTESUBDIR; + } + + +# In case of deletion actions, stop qmail +if ($dactions) { + stopQmail() or die "Could not stop qmail: $!\n"; +} + +# Execute actions +foreach my $action (@actions) { + my $sub = shift @$action; # First element is the sub + $sub->(@$action); # Others the arguments, if any +} + +# In case of deletion actions, restart qmail +if ($dactions) { + startQmail() or die "Could not stop qmail: $!\n"; +} + +# ##### SERVICE FUNCTIONS ##### + +# Stop qmail +sub stopQmail { + my ($qmpid) = qmailPid(); + + # If qmail is running, we stop it + if ($qmpid != 0) { + + # If there is a system script available, we use it + if ($stopqmail ne '') { + + print "Calling system script to terminate qmail...\n"; + if (system($stopqmail) > 0) { + return 0; + } +# sleep 1; + while (qmailPid()){ + sleep 1; + } + + # Otherwise, we're killers! + } else { + print "Terminating qmail (pid $qmpid)... this might take a while if qmail is working.\n"; + kill 'TERM', $qmpid; + + while (qmailPid()){ + sleep 1; + } + } + + # If it isn't, we don't. We also set a flag which assures we don't + # restart it later either (the user might not want this) + } else { + print "Qmail isn't running... no need to stop it.\n"; + $norestart = 1; + } + + return 1; +} + +# Start qmail +sub startQmail { + my ($qmpid) = qmailPid(); + + # If qmail is running, why restart it? + if ($qmpid != 0) { + print "Qmail is already running again, so it won't be restarted.\n"; + + # If it wasn't running before qmHandle was launched, it's better leave is this way + } elsif ($norestart == 1) { + print "Qmail wasn't running when qmHandle was started, so it won't be restarted.\n"; + + # In any other case, we restart it + } else { + print "Restarting qmail... "; + system($startqmail); + print "done (hopefully).\n"; + } + + return 1; +} + +# Returns the subject of a message +sub getSubject { + my $msg = shift; + my $msgsub; + open (MSG, "${queue}mess/$msg") or die("cannot open message $msg! Is qmail-send running?\n"); + while () { + if ( $_ =~ /^Subject: /) { + $msgsub = $'; + chop ($msgsub); + } elsif ( $_ eq "\n") { + last; + } + } + close (MSG); + return $msgsub; +} + +sub getSender { + my $msg = shift; + my $sender; + open (MSG, "${queue}/info/$msg") or die("cannot open info file ${queue}/info/$msg! Is qmail-send running?\n"); + $sender = ; + substr($sender, 0, 1) = ''; + chop ($sender); + close (MSG); + return $sender; +} + + +# ##### MAIN FUNCTIONS ##### + +# Tries to send all queued messages now +# This is achieved by sending an ALRM signal to qmail-send +sub SendMsgs { + my ($qmpid) = qmailPid(); + + # If qmail is running, we force sending of messages + if ($qmpid != 0) { + + kill 'ALRM', $qmpid; + + } else { + + print "Qmail isn't running, can't send messages!\n"; + + } +} + +sub showMessageInfo { + my (%ret, %date, %from, %subj, %to, %cc, %fsize); +my $msg = shift; +# Read return path + open (MSG, "${queue}info/$msg"); + $ret{$msg} = ; + substr($ret{$msg}, 0, 1) = ''; + chop ($ret{$msg}); + close (MSG); + my ($dirno, $rmsg) = split(/\//, $msg); + print "$rmsg ($dirno, $msg)\n"; + + # Get message (file) size + $fsize{$msg} = (stat("${queue}mess/$msg"))[7]; + + # Read something from message header (sender, receiver, subject, date) + open (MSG, "${queue}mess/$msg"); + while () { + if ($_ =~ /^Date: /) { + $date{$msg} = $'; + chop ($date{$msg}); + } elsif ( $_ =~ /^From: /) { + $from{$msg} = $'; + chop ($from{$msg}); + } elsif ( $_ =~ /^Subject: /) { + $subj{$msg} = $'; + chop ($subj{$msg}); + } elsif ( $_ =~ /^To: /) { + $to{$msg} = $'; + chop ($to{$msg}); + } elsif ( $_ =~ /^Cc: /) { + $cc{$msg} = $'; + chop ($cc{$msg}); + } elsif ( $_ eq "\n") { + last; + } + } + close(MSG); + + defined($ret{$msg}) and print " ${cmsg}Return-path${cend}: $ret{$msg}\n"; + defined($from{$msg}) and print " ${cmsg}From${cend}: $from{$msg}\n"; + defined($to{$msg}) and print " ${cmsg}To${cend}: $to{$msg}\n"; + defined($cc{$msg}) and print " ${cmsg}Cc${cend}: $cc{$msg}\n"; + defined($subj{$msg}) and print " ${cmsg}Subject${cend}: $subj{$msg}\n"; + defined($date{$msg}) and print " ${cmsg}Date${cend}: $date{$msg}\n"; + defined($fsize{$msg}) and print " ${cmsg}Size${cend}: $fsize{$msg} bytes\n\n"; + +} + +# Display message list +# pass parameter of queue NOT to list! i.e. if you want remote only, pass L +# if you want local, pass R if you want all pass anything else eg A +sub ListMsg { + my ($q) = shift; + +# if ($summary == 0) { + +# for my $msg(keys %msglist) { + +# } + +# } + + + for my $msg (keys %msglist) { + if ($summary == 0) { + if ($q eq 'L') { + if ($msglist{$msg}{'local'}) { + showMessageInfo($msg); + } + } + if ($q eq 'R') { + if ($msglist{$msg}{'remote'}) { + showMessageInfo($msg); + } + } + if ($q eq 'A') { + if ($msglist{$msg}{'local'}) { + showMessageInfo($msg); + } + if ($msglist{$msg}{'remote'}) { + showMessageInfo($msg); + } + } + } ## end if ($summary == 0) + } ## end foreach my $msg (@msglist) + + Stats(); +} + +# View a message in the queue +sub ViewMsg { + my ($rmsg) = shift; + + unless ($rmsg =~ /^\d+$/) { + + print "$rmsg is not a valid message number!\n"; + + } else { + + # Search message + my ($ok) = 0; + for my $msg(keys %msglist) { + if ($msg =~ /\/$rmsg$/) { + $ok = 1; + print "\n --------------\nMESSAGE NUMBER $rmsg \n --------------\n"; + open (MSG, "${queue}mess/$msg"); + while () { + print $_; + } + close (MSG); + last; + } + } + + # If the message isn't found, print a notice + if ($ok == 0) { + print "Message $rmsg not found in the queue!\n"; + + } + } + +} + +sub TrashMsgs { +my @todelete = (); +my $dirno; +my $msgno; +my $grouped = 0; +my $deleted = 0; + foreach my $msg (@todel) { + $grouped++; + $deleted++; + ($dirno, $msgno) = split(/\//, $msg); + if ($msglist{$msg}{'bounce'}) { + push @todelete, "${queue}bounce/$msgno"; + } + push @todelete, "${queue}mess/$msg"; + push @todelete, "${queue}info/$msg"; + if ($msglist{$msg}{'remote'}) { + push @todelete, "${queue}remote/$msg"; + } + if ($msglist{$msg}{'local'}) { + push @todelete, "${queue}local/$msg"; + } + if ($msglist{$msg}{'todo'}) { + push @todelete, "${queue}todo/$msglist{$msg}{'todo'}"; + push @todelete, "${queue}intd/$msglist{$msg}{'todo'}"; + } + if ($grouped == 11) { + unlink @todelete; + @todelete = (); + $grouped = 0; + } + } + if ($grouped != 0) { + unlink @todelete; + } + print "Deleted $deleted messages from queue\n"; +} + +sub FlagMsgs { + my $now = time; + my @flagqueue = (); + my $flagged = 0; + foreach my $msg (@toflag) { + push @flagqueue, "${queue}info/$msg"; + $flagged++; + if ($flagged == 30) { + utime $now, $now, @flagqueue; + $flagged = 0; + @flagqueue = (); + } + } + if ($flagged != 0) { + utime $now, $now, @flagqueue; + } +} + +# Delete a message in the queue +sub DelMsg { + my ($rmsg) = shift; + + unless ($rmsg =~ /^\d+$/) { + + print "$rmsg is not a valid message number!\n"; + + } else { + + # Search message + my ($ok) = 0; + for my $msg(keys %msglist) { + if ($msg =~ /\/$rmsg$/) { + $ok = 1; + $dmes = 1; + push @todel, $msg; + print "Deleting message $rmsg...\n"; + last; + } + } + + # If the message isn't found, print a notice + if ($ok == 0) { + print "Message $rmsg not found in the queue!\n"; + } + if ($dmes == 1) { + if ($dactions == 1) { + TrashMsgs(); + } + else { + $dactions--; + } + } + + + } +} + +sub DelMsgFromSender { + my $badsender = shift; + my $dirno; + my $msgno; + my $sender; + + print "Looking for messages from $badsender\n"; + + my ($ok) = 0; + for my $msg (keys %msglist) { + if ($msglist{$msg}{'sender'}) { + $sender = getSender($msg); + if ($sender eq $badsender) { + $ok = 1; + $dmes = 1; + ($dirno, $msgno) = split(/\//, $msg); + print "Message $msgno slotted for deletion\n"; + push @todel, $msg; + } + } + } +# If no messages are found, print a notice + if ($ok == 0) { + print "No messages from $badsender found in the queue!\n"; + } + if ($dmes == 1) { + if ($dactions == 1) { + TrashMsgs(); + } + else { + $dactions--; + } + } +} + +sub DelMsgFromSenderR { + my $badsender = shift; + my $dirno; + my $msgno; + my $sender; + + print "Looking for messages from senders matching $badsender\n"; + + my ($ok) = 0; + for my $msg (keys %msglist) { + if ($msglist{$msg}{'sender'}) { + $sender = getSender($msg); + if ($sender =~ /$badsender/) { + $ok = 1; + $dmes = 1; + ($dirno, $msgno) = split(/\//, $msg); + print "Message $msgno slotted for deletion\n"; + push @todel, $msg; + } + } + } +# If no messages are found, print a notice + if ($ok == 0) { + print "No messages from senders matching $badsender found in the queue!\n"; + } + if ($dmes == 1) { + if ($dactions == 1) { + TrashMsgs(); + } + else { + $dactions--; + } + } +} + +sub DelMsgHeaderR { + my $case = shift; + my $re = shift; + my $dirno; + my $msgno; + + print "Looking for messages with headers matching $re\n"; + + my ($ok) = 0; + for my $msg (keys %msglist) { + open (MSG, "${queue}mess/$msg") or die("cannot open message $msg! Is qmail-send running?\n"); + while () { + if ($case eq 'C') { + if ($_ =~ /$re/) { + $ok = 1; + $dmes = 1; + ($dirno, $msgno) = split(/\//, $msg); + print "Message $msgno slotted for deletion.\n"; + push @todel, $msg; + last; + } elsif ( $_ eq "\n") { + last; + } + } else { + if ($_ =~ /$re/i) { + $ok = 1; + $dmes = 1; + ($dirno, $msgno) = split(/\//, $msg); + print "Message $msgno slotted for deletion.\n"; + push @todel, $msg; + last; + } elsif ( $_ eq "\n") { + last; + } + } + } + close (MSG); + + } +# If no messages are found, print a notice + if ($ok == 0) { + print "No messages with headers matching $re found in the queue!\n"; + } + if ($dmes == 1) { + if ($dactions == 1) { + TrashMsgs(); + } + else { + $dactions--; + } + } +} + +sub DelMsgBodyR { + my $case = shift; + my $re = shift; + my $dirno; + my $msgno; + my $nomoreheaders = 0; + + print "Looking for messages with body matching $re\n"; + + my ($ok) = 0; + for my $msg (keys %msglist) { + open (MSG, "${queue}mess/$msg") or die("cannot open message $msg! Is qmail-send running?\n"); + while () { + if ($nomoreheaders == 1) { + if ($case eq 'C') { + if ($_ =~ /$re/) { + $ok = 1; + $dmes = 1; + ($dirno, $msgno) = split(/\//, $msg); + print "Message $msgno slotted for deletion.\n"; + push @todel, $msg; + last; + } + } else { + if ($_ =~ /$re/i) { + $ok = 1; + $dmes = 1; + ($dirno, $msgno) = split(/\//, $msg); + print "Message $msgno slotted for deletion.\n"; + push @todel, $msg; + last; + } + } + } + else { + if ($_ eq "\n") { + $nomoreheaders = 1; + } + } + } + close (MSG); + $nomoreheaders = 0; + + } +# If no messages are found, print a notice + if ($ok == 0) { + print "No messages with body matching $re found in the queue!\n"; + } + if ($dmes == 1) { + if ($dactions == 1) { + TrashMsgs(); + } + else { + $dactions--; + } + } +} + +sub DelMsgSubj { + my $subject = shift; + my $msgsub; + my $dirno; + my $msgno; + + print "Looking for messages with Subject: $subject\n"; + + # Search messages + my ($ok) = 0; + for my $msg (keys %msglist) { + ($dirno, $msgno) = split(/\//, $msg); + $msgsub = getSubject($msg); + + if ($msgsub and $msgsub =~ /$subject/) { + $ok = 1; + $dmes = 1; + print "Deleting message: $msgno\n"; + push @todel, $msg; + } + + } + + # If no messages are found, print a notice + if ($ok == 0) { + print "No messages matching Subject \"$subject\" found in the queue!\n"; + } + if ($dmes == 1) { + if ($dactions == 1) { + TrashMsgs(); + } + else { + $dactions--; + } + } + +} + + +# Delete all messages in the queue (thanks Kasper Holtze) +sub DelAll { + + # Search messages + my ($ok) = 0; + my ($dirno, $msgno); + for my $msg (keys %msglist) { + $ok = 1; + $dmes = 1; + ($dirno, $msgno) = split(/\//, $msg); + print "Message $msgno slotted for deletion!\n"; + push @todel, $msg; + } + + # If no messages are found, print a notice + if ($ok == 0) { + print "No messages found in the queue!\n"; + } + if ($dmes == 1) { + if ($dactions == 1) { + TrashMsgs(); + } + else { + $dactions--; + } + } +} + +sub FlagRemote { + my $re = shift; + my $dirno; + my $msgno; + my $recipients; + + print "Looking for messages with recipients in $re\n"; + + my ($ok) = 0; + for my $msg (keys %msglist) { + if ($msglist{$msg}{'remote'}) { + open (MSG, "${queue}remote/$msg") or die("cannot open remote file for message $msg! Is qmail-send running?\n"); + $recipients = ; + chop($recipients); + close (MSG); + if ($recipients =~ $re) { + $ok = 1; + push @toflag, $msg; + print "Message $msg being tagged for earlier retry (and lengthened stay in queue)!\n" + } + } + } +# If no messages are found, print a notice + if ($ok == 0) { + print "No messages with recipients in $re found in the queue!\n"; + } else { + FlagMsgs(); + } +} + +# Make statistics +sub Stats { + my ($total) = 0; + my ($l) = 0; + my ($r) = 0; + my ($b) = 0; + my ($t) = 0; + + foreach my $msg(keys %msglist) { + $total++; + if ($msglist{$msg}{'local'} ) { $l++; } + if ($msglist{$msg}{'remote'} ) { $r++; } + if ($msglist{$msg}{'bounce'} ) { $b++; } + if ($msglist{$msg}{'todo'} ) { $t++; } + } + + print "${cstat}Total messages${cend}: $total\n"; + print "${cstat}Messages with local recipients${cend}: $l\n"; + print "${cstat}Messages with remote recipients${cend}: $r\n"; + print "${cstat}Messages with bounces${cend}: $b\n"; + print "${cstat}Messages in preprocess${cend}: $t\n"; +} + +# Retrieve pid of qmail-send +sub qmailPid { + my $qmpid = `$pidcmd`; + chomp ($qmpid); + $qmpid =~ s/\s*//g; + if ($qmpid =~ /^\d+$/) { return $qmpid; } + return 0; +} + +# Print help +sub Usage { + print "qmHandle v$version\n"; + print "Copyright 1998-2003 Michele Beltrame\n\n"; + print "Available parameters:\n"; + print " -a : try to send queued messages now (qmail must be running)\n"; + print " -l : list message queues\n"; + print " -L : list local message queue\n"; + print " -R : list remote message queue\n"; + print " -s : show some statistics\n"; + print " -mN : display message number N\n"; + print " -dN : delete message number N\n"; + print " -fsender : delete message from sender\n"; + print " -f're' : delete message from senders matching regular expression re\n"; + print " -Stext : delete all messages that have/contain text as Subject\n"; + print " -h're' : delete all messages with headers matching regular expression re (case insensitive)\n"; + print " -b're' : delete all messages with body matching regular expression re (case insensitive)\n"; + print " -H're' : delete all messages with headers matching regular expression re (case sensitive)\n"; + print " -B're' : delete all messages with body matching regular expression re (case sensitive)\n"; + print " -t're' : flag messages with recipients in regular expression 're' for earlier retry (note: this lengthens the time message can stay in queue)\n"; + print " -D : delete all messages in the queue (local and remote)\n"; + print " -V : print program version\n"; + print "\n"; + print "Additional (optional) parameters:\n"; + print " -c : display colored output\n"; + print " -N : list message numbers only\n"; + print " (to be used either with -l, -L or -R)\n"; + print " -X : do the same but for smeserver-altqmail contrib\n"; + print "\n"; + print "You can view/delete multiple message i.e. -d123 -v456 -d567\n\n"; + exit; +} + +# Print help +sub Version { + print "qmHandle v$version\n"; +} + diff --git a/root/usr/share/doc/qmHandle/GPL b/root/usr/share/doc/qmHandle/GPL new file mode 100644 index 0000000..5b6e7c6 --- /dev/null +++ b/root/usr/share/doc/qmHandle/GPL @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/root/usr/share/doc/qmHandle/HISTORY b/root/usr/share/doc/qmHandle/HISTORY new file mode 100644 index 0000000..74d0ab9 --- /dev/null +++ b/root/usr/share/doc/qmHandle/HISTORY @@ -0,0 +1,91 @@ +qmHandle history +(c) Michele Beltrame +-------------------- +1.3.2 by Chan Chung Hang Christopher + * Printing message no: was code not tested prior to 1.3.1 release...perl compilation errors. Fixed. +1.3.1 by Chan Chung Hang Christopher + * Reworked qmhandle left out printing message no: when detailed listing of messages is requested! Fixed. +1.3.0 by Chan Chung Hang Christopher + * Reworked qmhandle to be more accurate in reporting queue information (todo state, bouncing...) + * Reworked qmhandle to be more efficient in handling message deletion when more than one message will be deleted + * Added big-todo support (required since todo files need to be handled) + * Added delete from sender support (both regular expression and string matching) + * Added touch info file for messages to remote domain for earlier retry (at the cost of longer queue life) + * Added delete if message header or body line matches regular expression (case sensitive and insensitive matching) +1.2.3 + * Fix: queue display transpose bug +1.2.2 + * Fix: added deletion routines to handle files in bounce subdirectory + * Fix: added whitespace remove line for pidof output reported by Charlies (cng-oz) +1.2.1 + * Corrested an error in the README, and on in the HISTORY + +1.2.0 (December 11, 2003) + * CHANGED SWITCH NAME: "-m" is now used to view messages (no more "-v") + * Added "-V" switch to print program version + * Added switch to delete messages based on subject [thanks Arne Bernin] + * Included GPL licence in the distribution + * Now qmail is stopped only once for multiple deletions of messages, which + makes things a bit faster + * Corrected a bug which might have caused wrong messages to be deleted + * Corrected several minor bugs + +1.1.1 (July 10, 2003) + * Corrected a bug which caused the -a switch not not work. + +1.1.0 (June 4, 2003) + * First release as a Sourceforge.Net community project... development + resumes!!! + * Added -a option to immediately send queued messages. + +1.0.0 (December 17, 2001) + * Made several functional and stylish adjustments to the code. + [Thanks Mike Marseglia] + * Much better handling of start/stop: qmHandle now can use system scripts + or DBJ daemontools if they are available. Also, it won't restart qmail + if it wasn't running when qmHandle was called. + [Thanks Philippe Gay] + * Updated the documentation. + * Finally named it version 1.0.0!!! Seems pretty stable, well I hope + it is. ;-) + +0.5.1 (July 23, 2001) + * Added a -D option which deletes al message in both local and remote queue. + [Thanks Kasper Holtze] + * Fixed a bug with the CC field when displaying message list. + [Thanks anonymous qmHandle user] + +0.5.0 (May 11, 2001) + * Added syntax check on message numbers passed to -v and -d, so that qmHandle + does not stop qmail or lookup messages if the argument is not valid. + [Thanks Bertu Barnard] + * Formatted the code in a more "Perlish" way. + * Added display of "Cc" fields in message list (-l). + * Empty fields in message list -l are not shown anymore. + +0.4.1 (October 22, 1999) [Thanks Franky Van Liedekerke]: + * Fixed a bug that caused messages in queue subdir "0" not to be + displayed. + +0.4.0 (February 2, 1999) [Thanks Rob]: + * Added multiple paramters and actions support. + * Added a more condensed queue display option. + * The program now show statistics also when listing queues. + * Added $pidcmd configuration variable, which allows to customize the + command used to get qmail process id (needed when deleting messages). + +0.3.0 (October 25, 1998): + * Fixed to support qmail 1.03. If you're using an older version, be + sure to change the $qmcmd variable if using previous version. + * Now when listing messages also message size is displayed. Thanks + to Jodok Sutterluety. + +0.2.0 (May 18, 1998): + * Fixed (with Rob help) a major problem in message deletion: qmHandle now + terminates qmail before deleting a message, and restarts it after doing + it. + * Improved documentation in README file. + * Changed executable file name from qmHandle.pl to qmHandle. + +0.1.0 (March 10, 1998): + * First release. diff --git a/root/usr/share/doc/qmHandle/README b/root/usr/share/doc/qmHandle/README new file mode 100644 index 0000000..1116fad --- /dev/null +++ b/root/usr/share/doc/qmHandle/README @@ -0,0 +1,133 @@ + qmHandle 1.3.0 + ============== + +Copyright 1998-2003 Michele Beltrame +Modified by Chan Chung Hang Christopher (June, 2007) + +INTRO +----- + +This is a simple perl script that helps you to view and manage (within some +limits) the qmail queue. + +With this script you can: + + * Read the qmail queue, like you do with the qmail-qread program. However, + the output of this script provides more information compared to qmail-qread such as + the message subject and color capabilities. + * Print queue statistics, similar to qmail-qstat, with color capabilities + * View a message in the queue. + * Remove a message from the queue. + * Remove messages that meet a criterion. + * Tell qmail to slot messages with recipients in a remote domain for earlier retry (at the cost of longer queue stay). + + +CONFIGURATION +------------- + +There are only a few variables to configure, and this has to be done depending +on your system and qmail installation. You can find the variables at the top of +the Perl script qmHandle (there's a configuration section properly marked). +The variables are: + +1) my ($queue) = '/var/qmail/queue/'; +This is the path of your qmail queue directory. It's located here on 99.9% +of qmail installation. If yours seems not to be there, try using the "find" +command to locate it. + +2) my ($stopqmail) = '/etc/init.d/qmail stop'; +This is the name of the script/command which stops qmail. The one you +see works on Debian GNU/Linux, if you have other you need to change it. +In the script configuration section you'll find some examples of +common options, including the one using DJB's daemontools. If you +don't have any script to stop qmail, you *must leave this string +empty*: + $stopqmail = ''; + +3) my ($startqmail) = "/etc/init.d/qmail start"; +This is the name of the script/command which stops qmail. The one you +see works on Debian GNU/Linux, if you have other you need to change it. +In the script configuration section you'll find some examples of +common options, including the one using DJB's daemontools and the +standard qmail distribution. + +4) my ($pidcmd) = 'pidof qmail-send'; +This is the command used to obtain qmail process id. The default +should work on most Unix systems, but if on yours doesn't you can +change it. + +Please note that variables from 2 to 4 are only needed to set properly +if you need to use qmHandle to delete messages in the queue. The first +one is however needed in any case. + + +USAGE +----- + +Usage is fairly simple. Here goes the help screen: + +Available parameters are: + -a : try to send all queued messages now (qmail must be running) + -l : list message queues + -L : list local message queue + -R : list remote message queue + -s : show some statistics + -mN : display message number N + -dN : delete message number N + -fsender : delete message from sender + -f're' : delete message from senders matching regular expression re + -Stext : delete all messages that have/contain text as Subject + -h're' : delete all messages with headers matching regular expression re (case insensitive) + -b're' : delete all messages with body matching regular expression re (case insensitive) + -H're' : delete all messages with headers matching regular expression re (case sensitive) + -B're' : delete all messages with body matching regular expression re (case sensitive) + -t're' : flag messages with recipients in regular expression 're' for earlier retry (note: this lengthens the time message can stay in queue) + -D : delete all messages in the queue (local & remote) + -V : print program version + +Additional (optional) parameters are: + -c : display colored output + -N : list message numbers only + (to be used either with -l, -L or -R) + +It's possible to specify multiple parameters for multiple actions, in any +order. + +Please note that you'll have to be superuser (root) in order to use this +program. + +A typical output of the command: + + qmHandle -l + +could be: + +------------------------------------------------- +143874 (9, R) + Return-path: m.beltrame@betamag.com + From: Michele Beltrame + To: beta-reg@nice.it + Subject: Re: [beta-reg] Server news pubblico. + Date: Fri, 10 Apr 1998 09:04:32 +0200 + Size: 1600 bytes +------------------------------------------------- + +The first line shows the number the message has in queue (the name of the +files in which it's stored) and, between parentheses, the directory number +where it's located and the queue he's in (L=local, R=remote). + + +GPL SOFTWARE +------------ + +This is open source software under the GPL (see 'GPL' file included in the +distribution). For more information on the license have a look at: + +http://www.gnu.org + +***For any problem, just drop an e-mail to mb@italpro.net.*** +Michele Beltrame does not maintain qmhandle anymore. Please email cchan-freetown@users.sourceforge.net instead. + +This project is a SourceForge.Net shared project. For more information visit: + +http://qmhandle.sourceforge.net/ diff --git a/root/usr/share/smanager/lib/SrvMngr/Controller/Qmh.pm b/root/usr/share/smanager/lib/SrvMngr/Controller/Qmh.pm new file mode 100644 index 0000000..47ee822 --- /dev/null +++ b/root/usr/share/smanager/lib/SrvMngr/Controller/Qmh.pm @@ -0,0 +1,329 @@ +package SrvMngr::Controller::Qmh; + +#---------------------------------------------------------------------- +# heading : System +# description : E-Mail queue management +# navigation : 4000 550 +# menu : A +# +# name : qmhandle, method : get, url : /qmh, ctlact : qmh#main +# name : qmhandle2, method : post, url : /qmh, ctlact : qmh#do_update +# name : qmhandled, method : get, url : /qmh2, ctlact : qmh#do_update + +# routes : end +# Copyright (C) 2005/2008 Peter Schubert, SACO Software and Consulting GmbH +#---------------------------------------------------------------------- +use strict; +use warnings; +use Mojo::Base 'Mojolicious::Controller'; + +use esmith::FormMagick qw(gen_locale_date_string); +use esmith::ConfigDB; + +use Locale::gettext; +use SrvMngr::I18N; + +use SrvMngr qw(theme_list init_session); + +our $cdb = esmith::ConfigDB->open() || die 'Cannot open configuration base'; + +sub main { + + my $c = shift; + $c->app->log->info($c->log_req); + + my %qmh_datas = (); + my $title = $c->l('qmh_QMH_TITLE'); + + $qmh_datas{'trt'} = 'LST'; + $qmh_datas{'altq'} = 0; + + $c->stash( title => $title, qmh_datas => \%qmh_datas ); + $c->render('qmh'); +}; + + +sub do_update { + + my $c = shift; + $c->app->log->info($c->log_req); + + my %qmh_datas = (); + my $result = ""; + + my $report_type = $c->param('Report_type'); + + my $trt = $c->param('trt'); + $qmh_datas{'trt'} = $trt; + + my $altq = $c->param('altq'); + $qmh_datas{'altq'} = $altq; + + if ($trt eq 'LST') { + if ($report_type =~ /^(\S+)$/) { + $report_type = $1; + } else { + $result = $c->l('INVALID_REPORT_TYPE') . " : $report_type"; + $report_type = undef; + } + + $altq = 0; + my $function = $report_type || ''; + if ($function =~ s/^alt-//) { + $altq = 1; + } + $qmh_datas{'altq'} = $altq; + + if ($function eq 'list-queues') { + $result = showListQueues ($c, $altq); + } elsif ($function eq 'list-local-queue') { + $result = showListLocalQueue ($c, $altq); + } elsif ($function eq 'list-remote-queue') { + $result = showListRemoteQueue ($c, $altq); + } elsif ($function eq 'resend') { + $result = resend($c, $altq); + } + + $qmh_datas{'trt'} = 'REP'; + } + + + if ($trt eq 'REP') { + $c->redirect_to('/qmh'); + } + + + if ($trt eq 'MSG') { + my $msgid = $c->param('msgid'); + $result = $c->render_to_string(inline => showDeleteMessageNumber($c, $msgid, $altq, $report_type)) if $msgid; + $qmh_datas{'msgid'} = $msgid; + } + + + if ($trt eq 'DEL') { + my $msgid = $c->param('msgid'); + $result = $c->render_to_string(inline => deleteMessageNumber($c, $msgid, $altq, $report_type)) if $msgid; + my $message = $c->l('qmh_DELETE') . '
' . $msgid; + #$c->app->log->info($message.' '.$result); + } + + + my $title = $c->l('qmh_QMH_TITLE'); + $c->stash( title => $title, qmh_datas => \%qmh_datas, modul => $result ); + $c->render('qmh'); + +}; + + +sub reportType_list { + + my $c = shift; + + my $rec = $cdb->get('altqmail'); + my $altqmail = ($cdb->get('altqmail')->value || 0) if $rec; + + return [[ $c->l('qmh_LIST_QUEUE') => 'list-queues' ], + [ $c->l('qmh_LIST_LOCAL_QUEUE') => 'list-local-queue' ], + [ $c->l('qmh_LIST_REMOTE_QUEUE') => 'list-remote-queue' ], + [ $c->l('qmh_RESEND_QUEUE') => 'resend' ]] + unless $altqmail; + + return [[ $c->l('qmh_LIST_QUEUE') => 'list-queues' ], + [ $c->l('qmh_LIST_LOCAL_QUEUE') => 'list-local-queue' ], + [ $c->l('qmh_LIST_REMOTE_QUEUE') => 'list-remote-queue' ], + [ $c->l('qmh_RESEND_QUEUE') => 'resend' ], + [ "altqmail: ". $c->l('qmh_LIST_QUEUE') => 'alt-list-queues' ], + [ "altqmail: ". $c->l('qmh_LIST_LOCAL_QUEUE') => 'alt-list-local-queue' ], + [ "altqmail: ". $c->l('qmh_LIST_REMOTE_QUEUE') => 'alt-list-remote-queue' ], + [ "altqmail: ". $c->l('qmh_RESEND_QUEUE') => 'alt-resend' ]]; +} + + +#------------------------------------------------------------ +# subroutine to showListQueues +#------------------------------------------------------------ +sub showListQueues { + + my ($c, $altq) = @_; + + my $out = ''; + my $reporttype = 'list-queues'; + + my $opt = ($altq ? 'altqmail: ' : ''); + $out .= sprintf("

%s


", $opt . $c->l('qmh_SHOWLISTQUEUES')); + $out .= sprintf("%s
%s", $c->l('qmh_VIEW_TIME'), scalar localtime(time)); + + $opt = ($altq ? '-X -l' : '-l'); + my $MailQueues = `/usr/bin/qmHandle $opt`; + $MailQueues =~ s//'/g; + + $MailQueues = AddLinks($MailQueues, $altq, $reporttype); + + $out .= sprintf "
";
+    $out .= "$MailQueues";
+    $out .= sprintf "
"; + $out .= sprintf ""; + return $out; +} + + +#------------------------------------------------------------ +# subroutine to showListLocalQueue +#------------------------------------------------------------ +sub showListLocalQueue { + + my ($c, $altq) = @_; + + my $out = ''; + my $reporttype = 'list-local-queue'; + + my $opt = ($altq ? 'altqmail: ' : ''); + $out .= sprintf("

%s


", $opt . $c->l('qmh_LIST_LOCAL_QUEUE')); + $out .= sprintf("%s
%s", $c->l('qmh_VIEW_TIME'), scalar localtime(time)); + + $opt = ($altq ? '-X -L' : '-L'); + my $LocalQueue = `/usr/bin/qmHandle $opt`; + $LocalQueue =~ s//'/g; + + $LocalQueue = AddLinks($LocalQueue, $altq, $reporttype); + + $out .= sprintf "
";
+    $out .= "$LocalQueue";
+    $out .= sprintf "
"; + $out .= sprintf ""; + return $out; +} + + +#------------------------------------------------------------ +# subroutine to showListRemoteQueue +#------------------------------------------------------------ +sub showListRemoteQueue { + + my ($c, $altq) = @_; + + my $out = ''; + my $reporttype = 'list-remote-queue'; + + my $opt = ($altq ? 'altqmail: ' : ''); + $out .= sprintf("

%s


", $opt . $c->l('qmh_LIST_REMOTE_QUEUE')); + $out .= sprintf("%s
%s", $c->l('qmh_VIEW_TIME'), scalar localtime(time)); + + $opt = ($altq ? '-X -R' : '-R'); + my $RemoteQueue = `/usr/bin/qmHandle $opt`; + $RemoteQueue =~ s//'/g; + + $RemoteQueue = AddLinks($RemoteQueue, $altq, $reporttype); + + $out .= sprintf "
";
+    $out .= "$RemoteQueue";
+    $out .= sprintf "
"; + $out .= sprintf ""; + return $out; +} + + +#------------------------------------------------------------ +# subroutine to send ALARM to qmail +#------------------------------------------------------------ +sub resend { + + my ($c, $altq) = @_; + + my $out = ''; + my $reporttype = 'resend'; + + my $opt = ($altq ? 'altqmail: ' : ''); + $out .= sprintf("

%s


", $opt . $c->l('qmh_TRY_SEND_QUEUE')); + $out .= sprintf("%s
%s", $c->l('qmh_SEND_QUEUE_AT'), scalar localtime(time)); + + $opt = ($altq ? '-X -a' : '-a'); + my $Res = `/usr/bin/qmHandle $opt`; + $Res =~ s//'/g; + + $Res = AddLinks($Res, $altq, $reporttype); + + $out .= sprintf "
";
+    $out .= "$Res";
+    $out .= sprintf "
"; + $out .= sprintf ""; + $out .= sprintf "

Done

"; + return $out; +} + + +sub AddLinks { + + my ($queues, $altq, $reporttype) = @_; + + my @splitq = split(/\n/, $queues); + + for (my $i = 0; $i < $#splitq; $i++) { + if ($splitq[$i] =~ /^(\d+)\s+(\(\d+\,\s+\d+\/+\d+\)\s*)$/ ) { + $splitq[$i] = "$1 $2"; + } + } + $queues = join("\n", @splitq); + + return $queues; +} + + +#------------------------------------------------------------ +# subroutine to showDeleteMessageNumber +#------------------------------------------------------------ +sub showDeleteMessageNumber { + + my ($c, $msgid, $altq, $reporttype) = @_; + + if ($msgid =~ /^(\d+)$/) { + $msgid = $1; + } else { + $msgid = undef; + } + + my $out = ''; + + my $opt = ($altq ? 'altqmail: ' : ''); + $out .= sprintf("

%s


", $opt . $c->l('qmh_DELETE_MSG_TITLEB')); + $out .= sprintf("%s", $c->l('qmh_DELETE_MESSAGE')); + + $opt = ($altq ? "-X -m$msgid|head -100" : "-m$msgid|head -100"); + my $Message = `/usr/bin/qmHandle $opt`; + + $out .= sprintf "
";
+    $out .= "";
+    $out .= sprintf "
"; + $out .= sprintf ""; + return $out; +} + + +sub deleteMessageNumber { + + my ($c, $msgid, $altq, $reporttype) = @_; + + if ($msgid =~ /^(\d+)$/) { + $msgid = $1; + } else { + $msgid = undef; + } + + my $out = ''; + my $opt = ($altq ? "-X -d$msgid" : "-d$msgid"); + my $Output = `/usr/bin/qmHandle $opt`; + + $out .= sprintf "
";
+    $out .= "$Output";
+    $out .= sprintf "
"; + $out .= sprintf ""; + return $out; + +} + + +1; diff --git a/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Qmh/qmh_en.lex b/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Qmh/qmh_en.lex new file mode 100644 index 0000000..40adc2d --- /dev/null +++ b/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Qmh/qmh_en.lex @@ -0,0 +1,21 @@ +'qmh_QMH_TITLE' => 'Qmail queue management', +'qmh_OPERATION_STATUS_REPORT' => 'Operation status report', +'qmh_QMH_DESC' => 'This panel uses qmHandle to manage the qmail message queues. Key features are the ability to view and delete messages in the queues.', +'qmh_TRY_SEND_QUEUE' => 'Force resending of the Qmail queue', +'qmh_SEND_QUEUE_AT' => 'Resend Qmail queue at: ', +'qmh_LIST_QUEUE' => 'List message queues', +'qmh_LIST_LOCAL_QUEUE' => 'List local message queue', +'qmh_SHOWLISTQUEUES' => 'List Qmail local and remote queues', +'qmh_LIST_REMOTE_QUEUE' => 'List remote message queue', +'qmh_VIEW_TIME' => 'Qmail message queue, viewed at: ', +'qmh_LIST_LOCAL_QUEUE' => 'List Qmail local queue', +'qmh_LIST_REMOTE_QUEUE' => 'List Qmail remote queue', +'qmh_RESEND_QUEUE' => 'Try to send queued messages now (qmail must be running)', +'qmh_DELETE_MSG_TITLEB' => 'Queue management: delete Message', +'qmh_DELETE_MESSAGE' => 'Delete this message from the queue ? (Only the first 100 lines are listed)', +'qmh_DELETE' => 'Delete', +'qmh_SELECT_AN_ACTION' => 'Select an action', +'qmh_iFROM_QUEUE' => 'from message queue', +'qmh_RETURN_TO_QUEUE' => 'Return to Queue', +'qmh_Administration' => 'Administration', +'E-mail Warteschlange' => 'E-Mail queue management', diff --git a/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Qmh/qmh_fr.lex b/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Qmh/qmh_fr.lex new file mode 100644 index 0000000..beedc95 --- /dev/null +++ b/root/usr/share/smanager/lib/SrvMngr/I18N/Modules/Qmh/qmh_fr.lex @@ -0,0 +1,21 @@ +'qmh_QMH_TITLE' => 'Administration de file d\'attente', +'qmh_OPERATION_STATUS_REPORT' => 'Rapport d\'état de l\'opération', +'qmh_QMH_DESC' => 'Ce panel utilise qmHandle pour administrer la file d\'attente de Qmail. Les fonctionnalités principales sont de voir et d\'effacer des messages dans la file d\'attente. ', +'qmh_TRY_SEND_QUEUE' => 'Forcer le renvoi de la file d\'attente de qmail', +'qmh_SEND_QUEUE_AT' => 'Renvoi la file d\'attente Qmail le : ', +'qmh_LIST_QUEUE' => 'Message de la file d\'attente', +'qmh_LIST_LOCAL_QUEUE' => 'File d\'attente locale', +'qmh_SHOWLISTQUEUES' => 'Files d\'attente locale et distante', +'qmh_LIST_REMOTE_QUEUE' => 'File d\'attente distante de QMAIL', +'qmh_VIEW_TIME' => 'La file d\'attente des messages de Qmail le : ', +'qmh_LIST_LOCAL_QUEUE' => 'File d\'attente locale de QMAIL', +'qmh_LIST_REMOTE_QUEUE' => 'File d\'attente distante de QMAIL', +'qmh_RESEND_QUEUE' => 'Renvoyer les messages de la file d\'attente maintenant (Qmail doit être en fonction)', +'qmh_DELETE_MSG_TITLEB' => 'Administration de file d\'attente : effacer le Message', +'qmh_DELETE_MESSAGE' => 'Effacez ce message de la file d\'attente? (Seulement les 100 premières lignes sont affichées)', +'qmh_DELETE' => 'Supprimer', +'qmh_SELECT_AN_ACTION' => 'Sélectionnez une action :', +'qmh_iFROM_QUEUE' => 'de la file d\'attente des messages', +'qmh_RETURN_TO_QUEUE' => 'Retour à la file d\'attente', +'qmh_Administration' => 'Administration', +'E-mail Warteschlange' => 'Administration de file d\'attente des courriels', diff --git a/root/usr/share/smanager/themes/default/templates/qmh.html.ep b/root/usr/share/smanager/themes/default/templates/qmh.html.ep new file mode 100644 index 0000000..fcfa379 --- /dev/null +++ b/root/usr/share/smanager/themes/default/templates/qmh.html.ep @@ -0,0 +1,56 @@ +% layout 'default', title => "Sme server 2 - qmh"; + +% content_for 'module' => begin +
+ % if ($config->{debug} == 1) { +

+ %= dumper $c->current_route + %= dumper $qmh_datas +

+ %} + % if ( stash 'error' ) { +
+ %= $c->render_to_string(inline => stash 'error') +
+ %} +

<%= $title %>

+ + % my $btn = l('PERFORM'); + % my $url = '/qmh'; + + %= form_for "$url" => (method => 'POST') => begin + % if ($qmh_datas->{trt} eq 'LST') { + %= $c->render_to_string(inline => $c->l('qmh_QMH_DESC')); +

+ + %=l 'qmh_SELECT_AN_ACTION' + + + %= select_field 'Report_type' => $c->reportType_list() + +

+ %} + % if ($qmh_datas->{trt} eq 'REP') { + % $btn = l('NEXT'); + %= $c->render_to_string( inline => stash 'modul' ) + %} + % if ($qmh_datas->{trt} eq 'DEL') { + % $btn = l('qmh_RETURN_TO_QUEUE'); + %= $c->render_to_string( inline => stash 'modul' ) + %= hidden_field 'msgid' => $qmh_datas->{msgid} + % $qmh_datas->{trt} = 'LST'; + %} + % if ($qmh_datas->{trt} eq 'MSG') { + % $btn = l('Delete'); + %= $c->render_to_string( inline => stash 'modul' ) + %= hidden_field 'msgid' => $qmh_datas->{msgid} + % $qmh_datas->{trt} = 'DEL'; + %} +
+ %= submit_button "$btn", class => 'action' +
+ %= hidden_field 'trt' => $qmh_datas->{trt} + %= hidden_field 'altq' => $qmh_datas->{altq} + % end +
+%end diff --git a/smeserver-qmHandle.spec b/smeserver-qmHandle.spec new file mode 100644 index 0000000..f41d9f9 --- /dev/null +++ b/smeserver-qmHandle.spec @@ -0,0 +1,149 @@ +%define name smeserver-qmHandle +Name: %{name} +%define version 1.4 +%define release 26 +Version: %{version} +Release: %{release}%{?dist} +BuildArch: noarch +License: GPL +Group: Networking/Info +Summary: adds a panel for managing the Qmail queues using qmHandle +BuildRoot: /var/tmp/%{name}-%{version}-%{release}-buildroot +Source: %{name}-%{version}.tar.xz + +Obsoletes: qmHandle +Obsoletes: e-smith-qmail-view +Obsoletes: e-smith-qmHandle +Obsoletes: smeserver-saco-qmHandle +Provides: smeserver-qmHandle +Requires: e-smith-base +Requires: e-smith-lib +Requires: perl +Requires: smeserver-release >= 10 +BuildRequires: e-smith-devtools + +AutoReqProv: no + +%description +A panel for managing the Qmail queues using qmHandle +(http://sourceforge.net/projects/qmhandle) + +%changelog +* Sat Sep 07 2024 cvs2git.sh aka Brian Read 1.4-26.sme +- Roll up patches and move to git repo [SME: 12338] + +* Sat Sep 07 2024 BogusDateBot +- Eliminated rpmbuild "bogus date" warnings due to inconsistent weekday, + by assuming the date is correct and changing the weekday. + +* Fri Mar 01 2024 Brian Read 1.4-25.sme +- Edit Menu entry to conform to new arrangements [SME: 12493] + +* Fri Nov 11 2022 Jean-Philippe Pialasse 1.4-24.sme +- apply locale 2022-11-11 patch + +* Mon Sep 26 2022 Trevor Batley 1.4-23.sme +- add in missing lexicons for bz12160 [SME: 12160] + +* Thu Sep 22 2022 bunkobugsy 1.4-22.sme +- fix to put email message in textare [SME: 12147] + +* Wed Sep 21 2022 Trevor Batley 1.4-21.sme +- Mojo (sm2) patches to match bugs 12151 and 12147 [SME: 12160] + +* Thu Aug 18 2022 John Crisp 1.4-20.sme +- Enhance message deletion [SME: 12151] + +* Thu Aug 18 2022 John Crisp 1.4-19.sme +- Tidy formatting [SME: 12151] + +* Thu Aug 18 2022 John Crisp 1.4-18.sme +- Add systemd Capability to qmHandle [SME: 12148] + +* Fri Jan 07 2022 Brian Read 1.4-17.sme +- Add-module-class-to-ep-file [SME: 11832] + +* Mon Aug 23 2021 Terry Fage 1.4-16.sme +- apply locale 2021-08-23 patch + +* Sat May 29 2021 Michel Begue 1.4-15.sme +- first use with smeserver-manager [SME: 11600] + +* Tue Feb 23 2021 Jean-Philipe Pialasse 1.4-14.sme +- add update event [SME: 11035] + +* Tue Oct 13 2020 Brian Read 1.4-13.sme +- Initial import to SME10 tree [SME: 11035] + +* Sat Dec 07 2019 SME Translation Server 1.4-12.sme +- apply locale 2019-12-07 patch + +* Fri Oct 27 2017 Jean-Philipe Pialasse 1.4-11.sme +- fix changelog [SME: 10449] + +* Mon Jul 10 2017 Jean-Philipe Pialasse 1.4-9.sme +- add panel support for altqmail [SME: 10380] +- if altqmail config db key is present the menus are added to control altqmail + +* Mon Jul 10 2017 Jean-Philipe Pialasse 1.4-7.sme +- add command line support for alqmail and fix conflict with stopping qmail [SME: 10379] + +* Thu Mar 17 2016 JP Pialasse 1.4-6.sme +- fix XML error in german translation [SME: 9041] +- patch fixed and pootle entries + +* Wed Mar 09 2016 JP Pialasse 1.4-5.sme +- apply locale 2016-03-09 patch + +* Sun Jul 14 2013 JP Pialasse 1.4-4.sme +- apply locale 2013-07-14 patch + +* Fri Aug 31 2012 JP Pialasse 1.4-3.sme +- fix path of sv + +* Thu Aug 30 2012 JP Pialasse 1.4-2.sme +- fix buildrequires and import in buildsys + +* Thu Aug 23 2012 JP Pialasse 1.4-1.sme +- Initial release + +%prep +%setup + +mkdir -p root/etc/e-smith/events/smeserver-qmHandle-update + +%build +perl createlinks + +%install +rm -rf $RPM_BUILD_ROOT + +(cd root ; find . -depth -print | cpio -dump $RPM_BUILD_ROOT) +rm -f e-smith-%{version}-filelist +/sbin/e-smith/genfilelist $RPM_BUILD_ROOT > %{name}-%{version}-filelist + +%clean +rm -rf $RPM_BUILD_ROOT + +%files -f %{name}-%{version}-filelist + +%defattr(-,root,root) +%attr(4750 root admin) "/etc/e-smith/web/functions/qmh" +%attr(0755 root root) "/usr/bin/qmHandle" + +%pre + +%post -p /bin/sh + +#/etc/e-smith/events/actions/navigation-conf >/dev/null 2>&1 + +if (systemctl list-unit-files |grep smanager) then + echo "Smanager restart in spec file" + /sbin/e-smith/signal-event smanager-refresh; +fi + + +%preun + +%postun -p /bin/sh +#/etc/e-smith/events/actions/navigation-conf >/dev/null 2>&1