initial commit of file from CVS for smeserver-qmHandle on Sat Sep 7 20:58:19 AEST 2024

This commit is contained in:
Trevor Batley 2024-09-07 20:58:19 +10:00
parent 5f440fc815
commit 6bb3bb8763
43 changed files with 5197 additions and 2 deletions

4
.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
*.rpm
*.log
*spec-20*
*.tgz

21
Makefile Normal file
View File

@ -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)

View File

@ -1,3 +1,15 @@
# smeserver-qmHandle
# <img src="https://www.koozali.org/images/koozali/Logo/Png/Koozali_logo_2016.png" width="25%" vertical="auto" style="vertical-align:bottom"> smeserver-qmHandle
SMEServer Koozali developed git repo for smeserver-qmHandle smecontribs
## Wiki
<br />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
<br />*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*
<br />

1
contriborbase Normal file
View File

@ -0,0 +1 @@
contribs10

33
createlinks Normal file
View File

@ -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
#--------------------------------------------------

View File

@ -0,0 +1,95 @@
<lexicon lang="bg">
<entry>
<base>QMH_TITLE</base>
<trans>Управление на опашките на Qmail</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Отчет за изпълнението</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>Този панел използва <b>qmHandle</b> за управление на опашките със съобщения на qmail. Ключови възможности са разглеждането и изтриването на отделни съобщения в опашка. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Форсирай повторното изпращане на съобщенията в опашката на Qmail</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Изпрати повторно на съобщенията в опашката на Qmail в:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>Покажи опашката със съобщения</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Покажи локалната опашка със съобщения</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>Покажи локалните и външните опашки на Qmail</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Покажи външната опашка със съобщения</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Опашка със съобщения на Qmail, показана на:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Покажи локална опашка на Qmail</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Покажи външната опашка на Qmail</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Опитай да пратиш съобщенията в опашка сега (qmail трябва да работи)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Управление на опашката: изтриване на съобщение</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Да изтрия ли това съобщение от опашката? (Само първите 100 реда ще се покажат)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Изтрии</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Message deleted</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Опашка за изпълнение</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Изберете действие</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Изпълни</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>от опашката със съобщения</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Администриране</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>Управление на опашките за ел. съобщения</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="da">
<entry>
<base>QMH_TITLE</base>
<trans>Administrer Qmail kø</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Status rapport</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>Denne side bruger <b>qmHandle</b> til at håndtere qmail besked kø. Primær funktion at kunne se og slette beskeder i køen. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Udfør genfremsendelse af Qmail køen</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Gensend Qmail køen ved:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List besked køen</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List lokal besked kø</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail lokal og fjern kø</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List fjern besked kø</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail kø, vist ved:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List lokal Qmail kø</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List fjern Qmail kø</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Prøv at sende besked kø nu (qmail skal være aktiv)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Kø management: Slet besked</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Slet besked fra køen? (Det er kun de første 100 linier som er listet)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Slet</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Besked sendt</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Run queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Vælg en aktivitet</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Udfør</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>fra besked køen</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administration</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>Administration af E-mail kø</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="de">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail-Warteschlangen verwalten</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Statusbericht</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <p>Dieses Panel verwendet <b>qmHandle</b> um die Qmail-Warteschlangen zu verwalten. Hauptfunktionen sind das Anzeigen und Löschen von E-Mails in diesen Warteschlangen. </p> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Erzwinge erneutes Versenden der Qmail-Warteschlange</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Qmail-Warteschlange erneut senden um:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>Warteschlangen anzeigen</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Lokale Warteschlange anzeigen</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>Lokale und entfernte Qmail-Warteschlangen anzeigen</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Entfernte Warteschlange anzeigen</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail-Warteschlange, angezeigt um:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Lokale Qmail-Warteschlange anzeigen</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Entfernte Qmail-Warteschlange anzeigen</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Versuche Nachrichten in der Warteschlange jetzt zu senden (qmail muss laufen)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Warteschlangen-Verwaltung: Nachricht löschen</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Diese Nachricht aus der Warteschlange löschen? (Es werden nur die ersten 100 Zeilen angezeigt)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Löschen</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Nachricht gesendet</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Run Queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Wählen Sie eine Aktion</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Ausführen</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>aus Warteschlange</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administration</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail-Warteschlangen-Verwaltung</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="el">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Αναφορά κατάστασης λειτουργίας</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Διαγραφή</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Μήνυμα Στάλθηκε</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Επιλέξτε κάποια ενέργεια</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Εκτέλεση</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Διαχείριση</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,103 @@
<lexicon lang="en-us">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Operation status report</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans>
<![CDATA[
<P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key
features are the ability to view and delete messages in the queues.
</P>
]]>
</trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at: </trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at: </trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>
Delete this message from the queue ? (Only the first 100 lines are listed)
</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Delete</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Message deleted</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Select an action</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Perform</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administration</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="es">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Estado de la operación</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Borrar</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>El mensaje ha sido enviado</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Seleccionar una acción</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Ejecutar</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administración</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="et">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Operatsiooni tulemus</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Kustuta</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Message deleted</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Vali toiming</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Perform</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administreerimine</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="fr">
<entry>
<base>QMH_TITLE</base>
<trans>Administration de file d'attente</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Rapport d'état de l'opération</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[<P>Ce panel utilise <b>qmHandle</b> 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. </P>]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Forcer le renvoi de la file d'attente de qmail</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Renvoi la file d'attente Qmail le : </trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>Message de la file d'attente</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>File d'attente locale</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>Files d'attente locale et distante</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>File d'attente distante de QMAIL</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>La file d'attente des messages de Qmail le : </trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>File d'attente locale de QMAIL</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>File d'attente distante de QMAIL</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Renvoyer les messages de la file d'attente maintenant (Qmail doit être en fonction)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Administration de file d'attente : effacer le Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Effacez ce message de la file d'attente? (Seulement les 100 premières lignes sont affichées)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Supprimer</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Message suprimé</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Retour à la file d'attente</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Sélectionnez une action :</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Exécuter</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>de la file d'attente des messages</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administration</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>Administration de file d'attente des courriels</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="he">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Operation status report</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Delete</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Message deleted</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>בחר פעולה</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Perform</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administration</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="hu">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Használati jelentés</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Törlés</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Üzenet elküldve</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Válasszon műveletet</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Végrehajtás</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Adminisztráció</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="id">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Laporan status operasi</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Hapus</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Isi pesan</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Pilih aksi</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Jalankan</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administrasi</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="it">
<entry>
<base>QMH_TITLE</base>
<trans>Gestione della coda Qmail</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Rapporto operazione</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>Il pannello utilizza <b>qmHandle</b> per gestire la coda dei messaggi di qmail. Per mezzo di ess è possibile visualizzare e cancellare i messaggi in coda. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Forza il reinvio dei messaggi in coda.</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Invia nuovamente i messaggi alle:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>Lista delle code di messaggi</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Lista della coda di messaggi locale</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>Lista delle code di messaggi locali e remote</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Lista della coda di messaggi remota</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Coda messaggi qmail, visualizzata alle:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Lista la coda locale Qmail</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Lista la coda remota Qmail</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Prova ad inviare adesso i messaggi in coda (qmail deve essere in esecuzione)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Gestione coda: cancella messaggio</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Cancello il messaggio dalla coda? (Sono visualizzate solo le prime 100 righe)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Elimina</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Messaggio</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Coda di esecuzione</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Selezionare un'azione</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Esegui</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>dalla coda messaggi</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Amministrazione</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>Gestione della coda e-mail</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="ja">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Operation status report</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>削除</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>メッセージを送信します</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>実行する作業を指定してください</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Perform</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>管理</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="nb">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Statusrapport for operasjonen</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Slett</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Melding</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Velg en aktivitet</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Utfør</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administrasjon</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="nl">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail wachtrij beheer</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Operationeel status rapport</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>Dit paneel gebruikt <b>qmHandle</b> voor het afhandelen van de qmail berichten wachtrij. Hoofdfuncties is de mogelijkheid om berichten die in de wachtrij staan te bekijken en te verwijderen. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Forceer het herverzenden van berichten in Qmail wachtrij</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Herverzend wachtrij berichten om:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>Bekijk wachtrij berichten</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Bekijk lokale wachtrij berichten</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>Bekijk Qmail wachtrijen voor lokale en uitgaande berichten</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Bekijk wachtrij voor uitgaande berichten</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail berichten wachtrij, bekeken op:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Bekijk lokale Qmail wachtrij</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Bekijk uitgaande Qmail wachtrij</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Probeer nu om wachtrij berichten te verzenden (qmail moet hiervoor actief zijn)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Wachtrij beheer: Bericht verwijderen</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Dit bericht verwijderen van de wachtrij? (Alleen de eerste 100 regels zijn getoond)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Verwijderen</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Bericht verzonden</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Run queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Selecteer een actie</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Uitvoeren</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>van berichten wachtrij</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Beheer</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail wachtrij beheer</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="pl">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Raport o stanie procesu</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Usuń</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Wiadomość została wysłana</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Wybierz akcję</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Perform</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administracja</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="pt-br">
<entry>
<base>QMH_TITLE</base>
<trans>Gerenciamento de fila do Qmail</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Relatório de status da operação</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>Este painel usa <b>qmHandle</b> para gerenciar as filas de mensagens do qmail. As principais características são a habilidade de ver e deletar mensagens nas filas. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Forçar reenvio da fila do Qmail</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Reenviar a fila do Qmail as:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>Listar filas de mensagens</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Listar fila de mensagens local</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>Listar filas remota e local do Qmail</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Lista fila de mensagens remota</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Fila de mensagem do Qmail, visto as:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Listar fila local do Qmail</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Lista lista remota do Qmail</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Tentar enviar as mensagens enfileiradas agora (Qmail deve estar rodando)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Gerenciamento da fila: excluir a mensagem</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Apagar esta mensagem da fila ? (Somente as primeiras 100 linhas são mostradas)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Excluir</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Mensagem</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Selecionar uma ação</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Executar</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>da fila de mensagens</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administração</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>Gerenciamento das filas de e-mail</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="pt">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Relarório de status de operação</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Apagar</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Mensagem</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Selecionar uma ação</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Executar</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administração</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="ro">
<entry>
<base>QMH_TITLE</base>
<trans>Gestionarea cozii de mailuri</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Raport operațiune</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>Acest panou utilizează <b>qmHandle</b> pentru a gestiona coada de mailuri. Importante sunt posibilitatea de a viedea si a sterge mesajele din coada de așteptare. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Forțează retrimiterea mailurilro din coadă</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Retrimite coada la ora:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>Listează mesajele din coadă</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Listează doar mesajele cu destinatar local din coadă</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>Listează mesajele cu destinatari locali sau distanți</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Listează doar mesajele cu destinatar distant din coadă</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Coadă de mesaje vizualizată la:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>Listeaza coada locală</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>Listează coada distantă</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Incearcă retrimiterea mesajelor acum (qmail trebuei sa fie pornit)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Gestionarea cozii de mesaje: sterge mesaje</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Stergeți acest mesaj din coada? (Numai primele 100 linii sunt listate) </trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Şterge</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Mesaj trimis</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Selectati o actiune</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Execută</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>din coada de mesje</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administrația</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>Gestionarea cozii de E-mailuri</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="ru">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Данные о состоянии функционирования</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Удалить</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Сообщение послано</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Выберите действие</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Выполнить</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Администрирование</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="sl">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Porocilo o delovanju</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Izbriši</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Sporočilo je poslano</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Izberite ukrep</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Izvedi</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administracija</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="sv">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>Statusrapport över operationerna</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Radera</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>Meddelandet skickades</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Körningskö</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>Välj en åtgärd</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Verkställ</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Administration</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="th">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>รายงานสถานะการทำงาน</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>ลบ</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>ข้อความ</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>เลือกดำเนินการอย่างใดอย่างหนึ่ง</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>ดำเนินงาน</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>การบริหาร</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="tr">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>İşlem durum raporu</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>Sil</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>İleti Gönderildi</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>İşlemi seçin</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>Uygula</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>Yönetim</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>E-Mail queue management</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="zh-cn">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail queue management</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>操作报告</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>This panel uses <b>qmHandle</b> to manage the qmail message queues. Key features are the ability to view and delete messages in the queues. </P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>Force resending of the Qmail queue</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>Resend Qmail queue at:</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>List message queues</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List local message queue</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>List Qmail local and remote queues</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List remote message queue</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail message queue, viewed at:</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>List Qmail local queue</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>List Qmail remote queue</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>Try to send queued messages now (qmail must be running)</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>Queue management: delete Message</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>Delete this message from the queue ? (Only the first 100 lines are listed)</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>删除</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>已发送消息</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>选择一个动作</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>执行</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>from message queue</trans>
</entry>
<entry>
<base>Administration</base>
<trans>管理</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>邮件队列管理</trans>
</entry>
</lexicon>

View File

@ -0,0 +1,95 @@
<lexicon lang="zh-tw">
<entry>
<base>QMH_TITLE</base>
<trans>Qmail駐列管理</trans>
</entry>
<entry>
<base>OPERATION_STATUS_REPORT</base>
<trans>運作狀態回報</trans>
</entry>
<entry>
<base>QMH_DESC</base>
<trans><![CDATA[ <P>此控制台使用<b>qmHandle</b>來管理qmail的訊息駐列。關鍵功能在於有能力去檢視與刪除駐列中的訊息。</P> ]]></trans>
</entry>
<entry>
<base>TRY_SEND_QUEUE</base>
<trans>強迫重新傳送Qmail駐列。</trans>
</entry>
<entry>
<base>SEND_QUEUE_AT</base>
<trans>重新傳送Qmail駐列於</trans>
</entry>
<entry>
<base>LIST_QUEUE</base>
<trans>列出訊息駐列</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>列出本地端訊息駐列</trans>
</entry>
<entry>
<base>SHOWLISTQUEUES</base>
<trans>列出Qmail的本地端與遠端駐列</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>列出遠端訊息駐列</trans>
</entry>
<entry>
<base>VIEW_TIME</base>
<trans>Qmail的訊息駐列被檢視於</trans>
</entry>
<entry>
<base>LIST_LOCAL_QUEUE</base>
<trans>列出Qmail本地端駐列</trans>
</entry>
<entry>
<base>LIST_REMOTE_QUEUE</base>
<trans>列出Qmail遠端駐列</trans>
</entry>
<entry>
<base>RESEND_QUEUE</base>
<trans>當下嘗試傳送駐列訊息qmail必須正在執行</trans>
</entry>
<entry>
<base>DELETE_MSG_TITLEB</base>
<trans>駐列管理:刪除訊息</trans>
</entry>
<entry>
<base>DELETE_MESSAGE</base>
<trans>從駐列中刪除此訊息僅列出前100行</trans>
</entry>
<entry>
<base>DELETE</base>
<trans>刪除</trans>
</entry>
<entry>
<base>DELETED</base>
<trans>訊息已送出</trans>
</entry>
<entry>
<base>RETURN_TO_QUEUE</base>
<trans>Return to queue</trans>
</entry>
<entry>
<base>SELECT_AN_ACTION</base>
<trans>選擇一項操作</trans>
</entry>
<entry>
<base>PERFORM</base>
<trans>效能</trans>
</entry>
<entry>
<base>iFROM_QUEUE</base>
<trans>從訊息駐列</trans>
</entry>
<entry>
<base>Administration</base>
<trans>管理</trans>
</entry>
<entry>
<base>E-mail Warteschlange</base>
<trans>電郵駐列管理</trans>
</entry>
</lexicon>

View File

@ -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 =~ 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 =~ 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] = "<a href=\"" .
$q->url( -absolute => 1 ) .
"?state=perform&function=confirm-delete-message-number&queue=$queueType" .
"&msgid=$1\">$1</a> $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] = "<a href=\"" .
$q->url( -absolute => 1 ) .
"?state=perform&function=alt-confirm-delete-message-number&queue=$queueType" .
"&msgid=$1\">$1</a> $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 =~ 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 =~ 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 =~ 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 =~ 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__
<form>
</form>

View File

868
root/usr/bin/qmHandle Executable file
View File

@ -0,0 +1,868 @@
#!/usr/bin/perl
#
# qmHandle
#
# Copyright(c) 1998 -> 2003 Michele Beltrame <mb@italpro.net>
#
# 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 (<MSG>) {
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 = <MSG>;
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} = <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 (<MSG>) {
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 (<MSG>) {
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 (<MSG>) {
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 (<MSG>) {
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 = <MSG>;
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";
}

View File

@ -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.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
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.
<signature of Ty Coon>, 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.

View File

@ -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.

View File

@ -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 <m.beltrame@betamag.com>
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/

View File

@ -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') . ' <br> ' . $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("<h2>%s</h2><br>", $opt . $c->l('qmh_SHOWLISTQUEUES'));
$out .= sprintf("%s<br>%s", $c->l('qmh_VIEW_TIME'), scalar localtime(time));
$opt = ($altq ? '-X -l' : '-l');
my $MailQueues = `/usr/bin/qmHandle $opt`;
$MailQueues =~ s/</'/g;
$MailQueues =~ s/>/'/g;
$MailQueues = AddLinks($MailQueues, $altq, $reporttype);
$out .= sprintf "<pre>";
$out .= "$MailQueues";
$out .= sprintf "</pre>";
$out .= sprintf "<input type=hidden name=\"Report_type\" value=\"$reporttype\">";
return $out;
}
#------------------------------------------------------------
# subroutine to showListLocalQueue
#------------------------------------------------------------
sub showListLocalQueue {
my ($c, $altq) = @_;
my $out = '';
my $reporttype = 'list-local-queue';
my $opt = ($altq ? 'altqmail: ' : '');
$out .= sprintf("<h2>%s</h2><br>", $opt . $c->l('qmh_LIST_LOCAL_QUEUE'));
$out .= sprintf("%s<br>%s", $c->l('qmh_VIEW_TIME'), scalar localtime(time));
$opt = ($altq ? '-X -L' : '-L');
my $LocalQueue = `/usr/bin/qmHandle $opt`;
$LocalQueue =~ s/</'/g;
$LocalQueue =~ s/>/'/g;
$LocalQueue = AddLinks($LocalQueue, $altq, $reporttype);
$out .= sprintf "<pre>";
$out .= "$LocalQueue";
$out .= sprintf "</pre>";
$out .= sprintf "<input type=hidden name=\"Report_type\" value=\"$reporttype\">";
return $out;
}
#------------------------------------------------------------
# subroutine to showListRemoteQueue
#------------------------------------------------------------
sub showListRemoteQueue {
my ($c, $altq) = @_;
my $out = '';
my $reporttype = 'list-remote-queue';
my $opt = ($altq ? 'altqmail: ' : '');
$out .= sprintf("<h2>%s</h2><br>", $opt . $c->l('qmh_LIST_REMOTE_QUEUE'));
$out .= sprintf("%s<br>%s", $c->l('qmh_VIEW_TIME'), scalar localtime(time));
$opt = ($altq ? '-X -R' : '-R');
my $RemoteQueue = `/usr/bin/qmHandle $opt`;
$RemoteQueue =~ s/</'/g;
$RemoteQueue =~ s/>/'/g;
$RemoteQueue = AddLinks($RemoteQueue, $altq, $reporttype);
$out .= sprintf "<pre>";
$out .= "$RemoteQueue";
$out .= sprintf "</pre>";
$out .= sprintf "<input type=hidden name=\"Report_type\" value=\"$reporttype\">";
return $out;
}
#------------------------------------------------------------
# subroutine to send ALARM to qmail
#------------------------------------------------------------
sub resend {
my ($c, $altq) = @_;
my $out = '';
my $reporttype = 'resend';
my $opt = ($altq ? 'altqmail: ' : '');
$out .= sprintf("<h2>%s</h2><br>", $opt . $c->l('qmh_TRY_SEND_QUEUE'));
$out .= sprintf("%s<br>%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 =~ s/>/'/g;
$Res = AddLinks($Res, $altq, $reporttype);
$out .= sprintf "<pre>";
$out .= "$Res";
$out .= sprintf "</pre>";
$out .= sprintf "<input type=hidden name=\"Report_type\" value=\"$reporttype\">";
$out .= sprintf "<h3>Done</h3>";
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] = "<a href=\"qmh2?trt=MSG&msgid=$1&Report_type=$reporttype\">$1</a> $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("<h2>%s</h2><br>", $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 "<pre>";
$out .= "<textarea name=\"message\" rows=30 cols=80>$Message</textarea>";
$out .= sprintf "</pre>";
$out .= sprintf "<input type=hidden name=\"Report_type\" value=\"$reporttype\">";
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 "<pre>";
$out .= "$Output";
$out .= sprintf "</pre>";
$out .= sprintf "<input type=hidden name=\"Report_type\" value=\"$reporttype\">";
return $out;
}
1;

View File

@ -0,0 +1,21 @@
'qmh_QMH_TITLE' => 'Qmail queue management',
'qmh_OPERATION_STATUS_REPORT' => 'Operation status report',
'qmh_QMH_DESC' => 'This panel uses <b>qmHandle</b> 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',

View File

@ -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 <b>qmHandle</b> 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',

View File

@ -0,0 +1,56 @@
% layout 'default', title => "Sme server 2 - qmh";
% content_for 'module' => begin
<div id="module" class="module qmh-panel">
% if ($config->{debug} == 1) {
<p>
%= dumper $c->current_route
%= dumper $qmh_datas
</p>
%}
% if ( stash 'error' ) {
<br><div class=sme-error>
%= $c->render_to_string(inline => stash 'error')
</div>
%}
<h1><%= $title %></h1>
% 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'));
<p>
<span class=label>
%=l 'qmh_SELECT_AN_ACTION'
</span><span class=data>
<!-- (to be sorted) -->
%= select_field 'Report_type' => $c->reportType_list()
</span>
</p>
%}
% 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';
%}
<div class='center'>
%= submit_button "$btn", class => 'action'
</div>
%= hidden_field 'trt' => $qmh_datas->{trt}
%= hidden_field 'altq' => $qmh_datas->{altq}
% end
</div>
%end

149
smeserver-qmHandle.spec Normal file
View File

@ -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 <brianr@koozali.org> 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 <brianr@koozali.org> 1.4-25.sme
- Edit Menu entry to conform to new arrangements [SME: 12493]
* Fri Nov 11 2022 Jean-Philippe Pialasse <tests@pialasse.com> 1.4-24.sme
- apply locale 2022-11-11 patch
* Mon Sep 26 2022 Trevor Batley <trevor@batley.id.au> 1.4-23.sme
- add in missing lexicons for bz12160 [SME: 12160]
* Thu Sep 22 2022 bunkobugsy <vasarhelyizsolt@hotmail.com> 1.4-22.sme
- fix to put email message in textare [SME: 12147]
* Wed Sep 21 2022 Trevor Batley <trevor@batley.id.au> 1.4-21.sme
- Mojo (sm2) patches to match bugs 12151 and 12147 [SME: 12160]
* Thu Aug 18 2022 John Crisp <jcrisp@safeandsoundit.co.uk> 1.4-20.sme
- Enhance message deletion [SME: 12151]
* Thu Aug 18 2022 John Crisp <jcrisp@safeandsoundit.co.uk> 1.4-19.sme
- Tidy formatting [SME: 12151]
* Thu Aug 18 2022 John Crisp <jcrisp@safeandsoundit.co.uk> 1.4-18.sme
- Add systemd Capability to qmHandle [SME: 12148]
* Fri Jan 07 2022 Brian Read <brianr@bjsystems.co.uk> 1.4-17.sme
- Add-module-class-to-ep-file [SME: 11832]
* Mon Aug 23 2021 Terry Fage <terry.fage@gmail.com> 1.4-16.sme
- apply locale 2021-08-23 patch
* Sat May 29 2021 Michel Begue <mab974@gmail.com> 1.4-15.sme
- first use with smeserver-manager [SME: 11600]
* Tue Feb 23 2021 Jean-Philipe Pialasse <tests@pialasse.com> 1.4-14.sme
- add update event [SME: 11035]
* Tue Oct 13 2020 Brian Read <brianr@bjsystems.co.uk> 1.4-13.sme
- Initial import to SME10 tree [SME: 11035]
* Sat Dec 07 2019 SME Translation Server <translations@contribs.org> 1.4-12.sme
- apply locale 2019-12-07 patch
* Fri Oct 27 2017 Jean-Philipe Pialasse <tests@pialasse.com> 1.4-11.sme
- fix changelog [SME: 10449]
* Mon Jul 10 2017 Jean-Philipe Pialasse <tests@pialasse.com> 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 <tests@pialasse.com> 1.4-7.sme
- add command line support for alqmail and fix conflict with stopping qmail [SME: 10379]
* Thu Mar 17 2016 JP Pialasse <tests@pialasse.com> 1.4-6.sme
- fix XML error in german translation [SME: 9041]
- patch fixed and pootle entries
* Wed Mar 09 2016 JP Pialasse <tests@pialasse.com> 1.4-5.sme
- apply locale 2016-03-09 patch
* Sun Jul 14 2013 JP Pialasse <tests@pialasse.com> 1.4-4.sme
- apply locale 2013-07-14 patch
* Fri Aug 31 2012 JP Pialasse <tests@pialasse.com> 1.4-3.sme
- fix path of sv
* Thu Aug 30 2012 JP Pialasse <tests@pialasse.com> 1.4-2.sme
- fix buildrequires and import in buildsys
* Thu Aug 23 2012 JP Pialasse <tests@pialasse.com> 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