Mailserver ignoriert bei der Mail-Zustellung mit Content-Filter zusätzliche Empfängeradressen
Hallo, ich wollte auf einem Mailserver (Postfix, Courier, MySQL, Amavis) einen Autoresponder für Urlaubsbenachrichtigungen einrichten, die einfach von jedem User per eMail selbst aktiviert/deaktiviert werden können. Ich verwende das Skript von Charles Hamilton wie auf dieser Seite beschrieben https://www.howtoforge.com/how-to-set-up-a-postfix-autoresponder-with-autore... . Das Skript wird hier in der master.cf als content_filter unter dem Service smtp angegeben. Da ich aber die eMails in Echtzeit von Amavis überprüfen lasse durch Portumleitungen (smtpd_proxy_filter=localhost:10024), musste ich den content_filter unter dem Service localhost:10025 definieren (autoresponder:dummy), damit es aufgerufen wird. Dies ist die einzige Abweichung von der Konfigurationsanleitung. Das Aktivieren / Deaktivieren der Benachrichtigungen funktioniert auch soweit. Allerdings wird bei normalen eMails die eMail nur immer einer Empfängeradresse zugestellt, wenn die Mail mehrere Empfängeradressen enthält! Alle anderen werden scheinbar ignoriert. Da weiß ich nicht weiter.
Hier ein paar Angaben aus der master.cf # port 25 auf Port 10024 umleiten / Echtzeitüberprüfung durch Amavis (kein Store&Foreward) smtp inet n - - - - smtpd -o smtpd_proxy_filter=localhost:10024 -o content_filter=
smtps inet n - - - - smtpd -o smtpd_proxy_filter=localhost:10024 -o content_filter= -o smtpd_tls_wrappermode=yes -o smtpd_sasl_auth_enable=yes -o smtpd_client_restrictions=permit_sasl_authenticated,reject -o milter_macro_daemon_name=ORIGINATING
#Konfiguration Port 10025 für Rückgabe der durch Amavis überprüften eMails localhost:10025 inet n - - - - smtpd -o content_filter=autoresponder:dummy -o smtpd_proxy_filter= -o smtpd_authorized_xforward_hosts=127.0.0.0/8 -o smtpd_client_restrictions= -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions= -o mynetworks=127.0.0.0/8 -o receive_override_options=no_unknown_recipient_checks
Am Ender der master.cf steht der Service autoresponder
autoresponder unix - n n - - pipe flags=Fq user=autoresponse argv=/usr/local/sbin/autoresponse -s ${sender} -r ${recipient} -S ${sasl_username} -C ${client_address}
Mit dieser Einstellung sehe ich dann in mail.log folgende Einträge, wenn ich eine normale eMail an mehrere User sende:
Dec 30 14:36:19 mailserver1 postfix/qmgr[20818]: 6C5FB276291: from=txbarth@web.de, size=1387, nrcpt=2 (queue active) Dec 30 14:36:19 mailserver1 amavis[16543]: (16543-13) Passed CLEAN, [212.227.17.11] [xx.xx.xxx.xx] txbarth@web.de -> user1@mydomain.de,user2@mydomain.de, Message-ID: 54A2AA4E.6020801@web.de, mail_ id: sCfjhIs-o9we, Hits: -1.9, size: 974, queued_as: 6C5FB276291, 325 ms Dec 30 14:36:19 mailserver1 postfix/smtpd[20831]: proxy-accept: END-OF-MESSAGE: 250 2.0.0 Ok, id=16543-13, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 6C5FB276291; from=txbarth@web.de to=user1@mydomain.de proto=ESMTP helo=<mout.web.de> Dec 30 14:36:19 mailserver1 postfix/smtpd[20831]: disconnect from mout.web.de[212.227.17.11] Dec 30 14:36:21 mailserver1 postfix/pickup[20817]: 730DA2762BD: uid=5002 from=txbarth@web.de Dec 30 14:36:21 mailserver1 postfix/pipe[20838]: 6C5FB276291: to=user2@mydomain.de, relay=autoresponder, delay=2, delays=0.01/0/0/2, dsn=2.0.0, status=sent (delivered via autoresponder service) Dec 30 14:36:21 mailserver1 postfix/pipe[20838]: 6C5FB276291: to=user1@mydomain.de, relay=autoresponder, delay=2, delays=0.01/0/0/2, dsn=2.0.0, status=sent (delivered via autoresponder service) Dec 30 14:36:21 mailserver1 postfix/qmgr[20818]: 6C5FB276291: removed Dec 30 14:36:21 mailserver1 postfix/cleanup[20837]: 730DA2762BD: message-id=54A2AA4E.6020801@web.de Dec 30 14:36:21 mailserver1 postfix/qmgr[20818]: 730DA2762BD: from=txbarth@web.de, size=1507, nrcpt=1 (queue active) Dec 30 14:36:21 mailserver1 postfix/virtual[20850]: 730DA2762BD: to=user2@mydomain.de, relay=virtual, delay=0.02, delays=0/0.01/0/0, dsn=2.0.0, status=sent (delivered to maildir) Dec 30 14:36:21 mailserver1 postfix/qmgr[20818]: 730DA2762BD: removed
Hier erscheint zweimal "delivered via autoresponder service", also für jede Empfängeradresse, aber nur einmal "delivered to maildir" für nur eine Empfängeradresse. Durch eine Kontrollausgabe im Autoresponder habe ich gesehen, dass es tatsächlich nur einmal aufgerufen wird.
Wenn ich den Autoresonder wieder rausnehme, bekommen alle Empfängeradressen die eMail zugestellt.
Dec 30 13:45:34 mailserver1 postfix/qmgr[19192]: 7F6BC276291: from=txbarth@web.de, size=100131, nrcpt=2 (queue active) Dec 30 13:45:34 mailserver1 amavis[16543]: (16543-09) Passed CLEAN, [212.227.15.4] [xx.xx.xx.xx] txbarth@web.de -> user1@mydomain.de,user2@mydomain.de, Message-ID: 54A29E68.30505@web.de, mail_id: enMVd7SzLQVj, Hits: -1.9, size: 99718, queued_as: 7F6BC276291, 418 ms Dec 30 13:45:34 mailserver1 postfix/smtpd[19220]: proxy-accept: END-OF-MESSAGE: 250 2.0.0 Ok, id=16543-09, from MTA([127.0.0.1]:10025): 250 2.0.0 Ok: queued as 7F6BC276291; from=thomasxbarth@web.de to=user1@mydomain.de proto=ESMTP helo=<mout.web.de> Dec 30 13:45:34 mailserver1 postfix/virtual[19230]: 7F6BC276291: to=user1@mydomain.de, relay=virtual, delay=0.03, delays=0.02/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to maildir) Dec 30 13:45:34 mailserver1 postfix/virtual[19230]: 7F6BC276291: to=user2@mydomain.de, relay=virtual, delay=0.03, delays=0.02/0.01/0/0.01, dsn=2.0.0, status=sent (delivered to maildir) Dec 30 13:45:34 mailserver1 postfix/qmgr[19192]: 7F6BC276291: removed
Kann mir vielleicht jemand weiterhelfen, warum eine eMail mit dem Content-Filter nicht jedem angegebenen Empfänger zugestellt wird?
Gruß, Thomas Barth
Frohes Neues!
Das Problem habe ich doch noch lösen können. Beim Blättern im Postfix-Buch bin ich auf den Abschnitt gestoßen: "Anschließend sollten Sie dafür sorgen, dass eMails mit mehreren Empfängern stehts für jeden Empfänger einzeln an das Script übergeben werden. Definieren Sie dafür den Parameter transportmethode_recipient_limit.
Eine weitere Erklärung fand ich dann hier http://linux.die.net/man/8/pipe
Some destinations cannot handle more than one recipient per delivery request. Examples are pagers or fax machines. In addition, multi-recipient delivery is undesirable when prepending a Delivered-to: or X-Original-To: message header.
To prevent Postfix from sending multiple recipients per delivery request, specify
transport_destination_recipient_limit = 1
in the Postfix main.cf file, where transport is the name in the first column of the Postfix master.cf entry for the pipe-based delivery transport.
In meinem Fall dann autoresponder_destination_recipient_limit = 1
Gruß, Thomas Barth
participants (1)
-
Thomas Barth