Postfix Bounce Messages

Version 1.0
Author: Falko Timme <ft [at] falkotimme [dot] com>

Translated: PlaNet Fox <howtoforge [at] planetfox.de [dot] de>

Erstellt: 10.03.08

Ich gebe keine Garantie, das diese Anleitung bei jedem Funktoniert

English version: link zu http://howtoforge.com/configure-custom-postfix-bounce-messages

Seit der Postfix Version 2.3 ist es möglich, benutzerdefinierte Bounce Messages ( eine Bounce Messge ist eine Fehlermeldung, die von einem Mailserver automatisch erzeugt wird, wenn eine E-Mail nicht zustellbar ist.) zu erstellen. Diese Anleitung ist die deutsche Version des Tutorials von Falko Timme.

1 Postfix Version

Als erstes müssen wir die Postfix Konfiguratuion überprüfen:

postconf -d | grep mail_version

server2:~# postconf -d | grep mail_version
mail_version = 2.3.8
milter_macro_v = $mail_name $mail_version
server2:~#

Wenn die Postfix version 2.3 oder höher ist, können wir weiter machen

2 Setzen der maximal_queue_lifetime und delay_warning_time

Siehe auch hier http://www.postfix.org/postconf.5.html

maximal_queue_lifetime: Diese Variable defininiert die maximale Zeit, die das postfix-System versuchen darf, eine Nachricht zuzustellen

delay_warning_time: Diese Variable legt fest, wieviel Zeit vergehen muss, bevor eine Warnung versendet wird….

Das Kommando postconf -n zeigt die in der Datei main.cf gesetzten Werte an. Das Kommando postconf -d zeigt die default Einstellungen an.

Um deine aktuelle Einstellung der maximal_queue_lifetime zu überprüfen, führe folgende Kommandos aus:

postconf -d | grep maximal_queue_lifetime
postconf -n | grep maximal_queue_lifetime

Sollte es nach diesen Kommandos keine Ausgabe geben, kann es auch sein, daß die Werte nicht gestzt sind.

So sollte es ausehen:

server2:~# postconf -d | grep maximal_queue_lifetime
maximal_queue_lifetime = 5d
server2:~# postconf -n | grep maximal_queue_lifetime
server2:~#

Möchtest du die Werte ändern, kannst du dies mit postconf -e durchführen. Die Änderung wird in der Datei /etc/postfix/main.cf hinterlegt.

postconf -e ‚maximal_queue_lifetime = 1d‘
postconf -e ‚delay_warning_time = 0h‘

Starte Postfix nun neu

/etc/init.d/postfix restart

Diese zwei Werte sind wichtig für die benutzerdefinierten Bouce Mails.

3. Erstelle eine Benutzerdefinierte Bounce Message

Hier einTtemplate, daß die deutsche und englische Sprache enthält

http://postfix.state-of-mind.de/bounce-templates/bounce.de-DE.cf

Das template beginnt mit template_name = <<EOF und ende am schluss mit dem wort „EOF“

Die Datei bounce.de-DE.cf beinhaltet vier Vorlagen für die genannten Situationen in denen Zustell-Status-Nachrichten generiert werden. Jede der Vorlagen besteht aus einer deutsch-sprachigen und einer englisch-sprachigen Passage. Jede Passage erklärt den Grund für die Zustell-Status-Nachricht und liefert dem Empfänger Informationen wo und wie er/sie sich weiterführende Informationen oder Hilfe holen kann.

Es ist natürlich möglich, für jede unterschiedliche Fehlermeldung einen benutzerdefinierten Text zu hinterlegen.

Wir erstellen nun im Verzeichnis /etc/postfix/ die Datei bounce.cf

vi /etc/postfix/bounce.cf

# $Id: bounce.de-DE.cf 15 2005-12-27 18:33:49Z patrick $
#
# Deutsch-sprachige Vorlagen fuer Postfix Zustell-Status-Benachrichtigungen
# (engl. DSN, Delivery Status Notification)
#
# Uebersetzt und an die deutsche Sprache angepasst von Patrick Koetter
# <p@state-of-mind.de> und Ralf Hildebrandt <ralf.hildebrandt@charite.de>.
#
# Folgen Sie den Anweisungen der bounce(5) manual page, um die in dieser Datei
# enthaltenen Zustell-Status-Benachrichtigungen in Ihren Postfix-Server
# einzubinden.

# failure_template
# Das failure_template kommt zum Einsatz, wenn der empfangende Mail-Server die
# Nachricht entweder zurueckgewiesen hat oder wenn die Nachricht nicht
# innerhalb eines vorgegebenen Zeitraums ($maximal_queue_lifetime) zugestellt
# werden konnte.
#
# In beiden Faellen wird der Inhalt von failure_template zusammen mit der
# urspruenglich gesendeten Nachricht und dem Fehler, der die Benachrichtigung
# hervorgerufen hat an den Absender der E-Mail gesendet.

failure_template = <<EOF
Charset: iso-8859-1
From: MAILER-DAEMON (Mail Delivery System)
Subject: Rueckgabe nicht zustellbarer Nachricht an Absender
Postmaster-Subject: Postmaster Copy: Undelivered Mail

Dies ist eine automatisch generierte Nachricht des $mail_name E-Mail-Dienstes.
Dieser Dienst wird auf dem Server $myhostname betrieben und teilt Ihnen
folgendes mit:

    Ihre Nachricht konnte an einen oder mehrere Empfaenger nicht zugestellt
    werden. Ein Problem-Bericht, sowie Ihre uspruengliche Nachricht wurden an
    das Ende dieser Nachricht angehaengt.

Fuer weitere Hilfe kontaktieren Sie bitte den fuer Sie zustaendigen
<postmaster>.

Senden Sie dazu den an diese E-Mail angefuegten Problem-Bericht mit.
Den Inhalt Ihrer urspruenglichen Nachricht koennen Sie - zum Schutz Ihrer
Privatsphaere - entfernen; er ist fuer eine Fehler-Diagnose nicht zwingend
notwendig.

                   Der $mail_name E-Mail-Dienst

                        INTERNATIONAL VERSION

This is the $mail_name program at host $myhostname.

I'm sorry to have to inform you that your message could not
be delivered to one or more recipients. It's attached below.

For further assistance, please send mail to <postmaster>

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

EOF

Du kanst natürlich das Template anpassen wie du möchtest und alle main.cf Variablen einsetzten, die du definiert hast (z.B. $myhostname) . Wenn du nach der Variable delay_template schaust, findest du weitere $delay_warning_time_hours and $maximal_queue_lifetime_days. Hier http://www.postfix.org/postconf.5.html#delay_warning_time findest du eine Beschreibung zu den einzelnen Variablen, allerdings in Englisch.

delay_warning_time_suffix: Expands into the value of the delay_warning_time parameter, expressed in the time unit specified by suffix, which is one of seconds, minutes, hours, days, or weeks.

maximal_queue_lifetime_suffix: Expands into the value of the maximal_queue_lifetime parameter, expressed in the time unit specified by suffix. See above under delay_warning_time for possible suffix values.

!!So if you use the variable $delay_warning_time_minutes instead of $delay_warning_time_hours in your template, you should follow it by the word “minutes” instead of “hours”.!!

So nun konfigurieren wir Postfix, damit es unsere benutzerdefinierten Nachrichten benutzt:

postconf -e ‚bounce_template_file = /etc/postfix/bounce.cf‘

Nun überprüfen wir, wie unsere bounce.cf ausschaut, wenn alle variablen durch die Systemwerte ersetzt sind. Wir können nun auch die Datei auf Fehler überprüfen z.B. vergessene Zeilen am Ende der Datei

postconf -b /etc/postfix/bounce.cf

server2:~# postconf -b /etc/postfix/bounce.cf

expanded_failure_text = <<EOF
Dies ist eine automatisch generierte Nachricht des Postfix E-Mail-Dienstes.
Dieser Dienst wird auf dem Server servtime.de betrieben und teilt Ihnen
folgendes mit:

Ihre Nachricht konnte an einen oder mehrere Empfaenger nicht zugestellt
werden. Ein Problem-Bericht, sowie Ihre urspruengliche Nachricht wurden an
das Ende dieser Nachricht angehaengt.

Fuer weitere Hilfe kontaktieren Sie bitte den fuer Sie zustaendigen
Postmaster.

Senden Sie dazu den an diese E-Mail angefuegten Problem-Bericht mit.
Den Inhalt Ihrer urspruenglichen Nachricht koennen Sie – zum Schutz Ihrer
Privatsphaere – entfernen; er ist fuer eine Fehler-Diagnose nicht zwingend
notwendig.

Der Servtime E-Mail-Dienst

INTERNATIONAL VERSION

This is the Postfix program at host server2.de.

I’m sorry to have to inform you that your message could not
be delivered to one or more recipients. It’s attached below.

For further assistance, please send mail to postmaster

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

EOF

expanded_delay_text = <<EOF
Dies ist eine automatisch generierte Nachricht des Postfix E-Mail-Dienstes.
Dieser Dienst wird auf dem Server servtime.de betrieben und teilt Ihnen
folgendes mit:

Eine von Ihnen gesendete Nachricht konnte seit 0
Stunden nicht zugestellt werden.

Sie muessen die Nachricht nicht noch einmal senden. Der Postfix
E-Mail-Dienst wird so lange versuchen Ihre Nachricht zuzustellen,
bis sie 1 Tage alt ist.

Sollte eine Zustellung bis in 1 Tagen nicht
gelingen, wird der Postfix E-Mail-Dienst die Zustellung abbrechen und
Sie davon in Kenntnis setzen.

Fuer weitere Hilfe kontaktieren Sie bitte den fuer Sie zustaendigen
<postmaster>.

Senden Sie dazu den, in dieser E-Mail angefuegten, Problem-Bericht mit.
Den Inhalt Ihrer urspruenglichen Nachricht koennen Sie, zum Schutz Ihrer
Privatsphaere, entfernen; er ist fuer eine Fehler-Diagnose nicht zwingend
notwendig.

Der Postfix E-Mail-Dienst

INTERNATIONAL VERSION

This is the Postfix program at host servtime.de.

####################################################################
# THIS IS A WARNING ONLY. YOU DO NOT NEED TO RESEND YOUR MESSAGE. #
####################################################################

Your message could not be delivered for 0 hour(s).
It will be retried until it is 1 day(s) old.

For further assistance, please send mail to Postmaster

If you do so, please include this problem report. You can
delete your own text from the attached returned message.

The Postfix program
EOF

expanded_success_text = <<EOF
Dies ist eine automatisch generierte Nachricht des Postfix E-Mail-Dienstes.
Dieser Dienst wird auf dem Server servtime.de betrieben und teilt Ihnen
folgendes mit:

Ihre Nachricht wurde erfolgreich an die E-Mail-Server der am Ende dieser
E-Mail aufgelisteten Empfaenger ausgeliefert.

Falls Sie eine Zustellbericht angefordet haben und der empfangende
E-Mail-Server diese Funktionalitaet unterstuetzt erhalten Sie
auch von diesem E-Mail-Server eine entsprechende Benachrichtigung.

Der Postfix E-Mail-Dienst

INTERNATIONAL VERSION

This is the Postfix program at host server2.de.

Your message was successfully delivered to the destination(s)
listed below. If the message was delivered to mailbox you will
receive no further notifications. Otherwise you may still receive
notifications of mail delivery errors from other systems.

The Postfix program
EOF

expanded_verify_text = <<EOF
Dies ist eine automatisch generierte Nachricht des Servtime E-Mail-Dienstes.
Dieser Dienst wird auf dem Server servtime.de betrieben und teilt Ihnen
folgendes mit:

Sie haben einen Empfaenger-Adressen-Bericht angefordert. Der Bericht wurde
an diese Nachricht angehaengt.

Der Postfix E-Mail-Dienst

INTERNATIONAL VERSION

This is the Postfix program at host server2.de.

Enclosed is the mail delivery report that you requested.

The Postfix program
EOF
server2:~#

Solltest du keine Fehler haben, kannst du Postfix neu starten und die benutzerdefinierten Bounce Nachrichten nutzen.

/etc/init.d/postfix restart

Um das Ganze zu testen, könnt Ihr z.B. eine Email an einen Provider schicken, bei dem ihr wisst das es die Email-Adresse mit Sicherheit nicht gibt.

4. Links

* Bounce erklärung wiki page: http://de.wikipedia.org/wiki/Bounce_Message
* Postfix Bounce configurationhttp://postfix.state-of-mind.de/bounce-templates/index.html (DE)

* Postfix bounce man page: http://www.postfix.org/bounce.5.html (EN)
* Postfix configuration parameters: http://www.postfix.org/postconf.5.html (EN)

Das könnte dich auch interessieren …