[Postfixbuch-users] Schleife: "554 5.4.0 Error: too many hops"

Sandy Drobic postfixbuch-users at japantest.homelinux.com
So Jul 22 14:38:18 CEST 2007


Florian Staudacher wrote:
>>> Anstelle der main.cf poste besser die Ausgabe von "postconf -n".
> 
> Ok, das hat sich jetzt etwas verändert... ich bin die Basic confirguration (http://www.postfix.org/BASIC_CONFIGURATION_README.html) noch mal durchgegangen (siehe Anhang)
> 
> und ich muss leider sagen, dass - so wie ich versucht habe mein Schleifenproblem zu lösen - es nicht ganz funktioniert hat...
> (siehe Anhang)

Deine Konfiguration scheint, von einigen unnötigen Parametern abgesehen,
in Ordnung zu sein.

Was genau funktioniert denn nicht. Wenn es um die Filterschleife geht,
zeige bitte die Logzeilen, wo die Schleife auftritt.

Poste bitte auch den Inhalt von /etc/postfix/transport

> 
> ...ich bin eben noch ein absoluter Neuling auf dem Gebiet Mailserver...
> 
> 
> 
>       __________________________________  Die etwas anderen Infos rund um das Thema Reisen. BE A BETTER WELTENBUMMLER!  www.yahoo.de/clever
> 
> 
> ------------------------------------------------------------------------
> 
> #
> # Postfix master process configuration file.  For details on the format
> # of the file, see the Postfix master(5) manual page.
> #
> # ==========================================================================
> # service type  private unpriv  chroot  wakeup  maxproc command + args
> #               (yes)   (yes)   (yes)   (never) (100)
> # ==========================================================================
> #
> # Before-filter SMTP server. Receive mail from the network and
> # pass it to the content filter on localhost port 10025.
> #
> smtp      inet  n       -       y       -       20      smtpd
>         -o content_filter=smtp:127.0.0.1:10025

Okay, das sieht gut aus. 20 Filterprozesse sollten kein Problem sein, wenn
du die entsprechende Hardware hast (Dual-CPU oder Dualcore und mindestens
1 GB RAM, besser 2GB RAM). Wenn auf dem gleichen Server noch ein
Imapserver läuft, könnte das sehr knapp werden bei 1 GB.

Üblich ist folgende Konstruktion:

smtp      inet  n       -       y       -       200      smtpd
       -o content_filter=amavis-smtp:127.0.0.1:10025

amavis-smtp   unix  -       -       n       -       15       smtp

Damit wird die Mailannahme nicht blockiert von der Anzahl der 15
Filterprozesse. Wenn kurzfristig ein Schwall von Mails eintrifft, laufen
sie einfach in die active queue ein und warten darauf, vom content_filter
abgearbeitet zu werden. Solange diese einigermaßen mitkommt, gibt es kein
Problem.
Diese Konstruktion skaliert erheblich besser als die Begrenzung von den
eingehenden smtpd-Prozessen. Das ist nur notwendig, wenn amavisd-new als
Proxy-Filter während der Mailannahme verwendet wird.

> #
> # After-filter SMTP server. Receive mail from the content filter
> # on localhost port 10026.
> #
> 127.0.0.1:10026 inet n  -       n       -        -      smtpd
>         -o content_filter=

Auch das sieht gut aus. Wenn du Amavisd-new einsetzt, ist der Rückgabeport
auch wirklich 10026? Bei Amavisd-new ist der Default 10025, und das würde
natürlich wieder zum Kreisverkehr führen.


> append_dot_mydomain = no
> body_checks = regexp:/etc/postfix/body_checks

Sind dort FILTER: drin enthalten?

> bounce_size_limit = 500000

Möchtest du bei einer Bounce wirklich bis zu einem halben Megabyte
zurückschicken?

> config_directory = /etc/postfix
> daemon_directory = /usr/lib/postfix
> default_destination_concurrency_limit = 2

Warum die Begrenzung auf 2?

> default_process_limit = 50

Dies würde ich wirklich bei dem Default 100 lassen und die teuren Prozesse
explizit in master.cf begrenzen wie oben in meinem Beispiel.

> delay_warning_time = 2

Die Default-Einheit würde ich der Transparenz halber direkt mitschreiben:
delay_warning_time = 2h

Sonst fragst du dich später, ob das nun Minuten, Stunden oder Tage waren.

> deliver_lock_attempts = 5

Warum dies auf 5 begrenzen? Hast du wirklich Mailbox-Dateien?

> disable_dns_lookups = no

Ist Default, kannst du auch weglassen.

> disable_mime_output_conversion = no

Ist Default, kannst du auch weglassen.

> duplicate_filter_limit = 20

Das ist schon fast kriminell. (^-^)
Schau dir bitte mal die Erklärung an:
http://www.postfix.org/postconf.5.html#duplicate_filter_limit

> header_checks = pcre:/etc/postfix/header_checks
> home_mailbox = Maildir/

Wenn dies so da steht, hast du Maildir-Verzeichnisse, keine
Mailbox-Dateien. Damit ist deliver_lock_attempts überflüssig und auch die
Beschränkung auf 2 gleichzeitige Verbindungen ist überflüssig. Zudem
schränkt es die Auslieferung per smtp stark ein, wenn viele Mails zu einem
Host gehen.

> html_directory = /usr/share/doc/packages/postfix/html
> inet_interfaces = all
> mail_spool_directory = /var/mail
> mailbox_command =
> mailbox_size_limit = 50000000

Default ist 51200000, kein großer Unterschied.

> mailbox_transport =
> manpage_directory = /usr/share/man
> maximal_queue_lifetime = 2d

Zwei Tage ist etwas knapp für mein Empfinden. Ich würde es auf mindestens
3 Tage setzen, dann bekommst du es wenigstens Montag mit, wenn am Freitag
ein Problem auftrat und kannst noch handeln.
Der Default ist 5 Tage. Ich hatte schon Mails die erst nach mehr als zwei
Tagen ausgeliefert werden konnten. Dann waren die Admins wieder bei der
Arbeit am remote Server und haben ihren Mist in Ordnung gebracht nach dem
Wochenende. Gib anderen auch die gleiche Chance.  (^-^)

> mydestination = localhost blackrose.dvrdns.org aristoteles.serveftp.org flos-page.mine.nu
> mydomain = blackrose.dvrdns.org
> myhostname = blackrose.dvrdns.org
> mynetworks = 127.0.0.0/8 192.168.0.0/16
> myorigin = blackrose.dvrdns.org
> notify_classes = protocol, resource, software

Ich nehme an, dass du keinen stark frequentierten Server hast, sonst
quillt deine Postmaster-Mailbox schnell über. Schon einige Tausend
abgewiesene Spams sorgend dafür, dass du in deinem Postfach nichts mehr
wiederfindest vor lauter notify-protocol-Mails. Sinnvoll ist dies nur,
wenn du ein neues Feature testest, welches das Protokoll vielleicht stören
könnte.

> qmgr_message_active_limit = 200

Diese Einstellung würde ich ohne Wenn und Aber als
"Ich-liebe-es-mich-in-den-Fuß-zu-schiessen" bezeichnen. Wenn du einmal
einen Stau auf dem Server hattest, möchtest du, dass er möglichst schnell
abgebaut wird. Mit 20.000 Mails in der aktiven Queue wird auch ein älterer
Server durchaus fertig. Dieses Limit ist seit Jahren nicht verändert
worden, und heute Server sind ganze Größenklassen leistungsfähiger als
frühere.

> qmgr_message_recipient_limit = 20

Siehe oben, wieder ein "Ich-liebe-es...

> readme_directory = /usr/share/doc/packages/postfix/README_FILES
> relay_domains = $mydestination

Ohne relay_domains sollte dieser Parameter besser leer sein, vor allem, da
du keine relay_recipient_maps hast, wo gültige Adressen stehen.

relay_domains =

> relayhost =
> sample_directory = /usr/share/doc/packages/postfix/samples
> setgid_group = maildrop
> smtp_sasl_auth_enable = no

Ist default, kannst du auch weglassen.

> smtp_use_tls = no

Ist default, kannst du auch weglassen.

> smtpd_hard_error_limit = 5

Für einen Server mit nicht so vielen Usern in einer Domain in Ordnung. Für
größere Domains mit hunderten oder tausenden von Usern zu hart.

> smtpd_helo_required = yes
> smtpd_recipient_limit = 10

Wenn du nicht mehr als 10 User hast auf deinem Server, würde das
vielleicht gehen, aber sei dir bewusst, dass die RFCs erfordern, dass du
mindestens 100 Pro Mails annehmen kannst. 10 ist extrem wenig. Abhängig
von der Zahl deiner User würde ich das definitiv erhöhen oder gleich beim
Default 1000 lassen.

> smtpd_recipient_restrictions = permit_mynetworks,reject_unauth_destination

Hier kannst du noch einige Checks einbauen, um offensichtliche Spams und
Viren abzublocken. Das kommt aber erst, nachdem dein Server sauber läuft.

> smtpd_sasl_auth_enable = no

Ist default, kannst du auch weglassen.

> smtpd_sender_restrictions = hash:/etc/postfix/access

Was steht in dieser Datei? Bitt sei dir bewusst, dass die Checks auch für
deine ausgehenden Mails gelten.

Ausgeschrieben würde dies sein:

smtpd_sender_restrictions =
	check_sender_access hash:/etc/postfix/access

Es wird also die Absender-Adresse des SMTP Envelopes geprüft hier. Wenn
dies nur für eingehende Mails gelten soll, setze es in
smtpd_recipient_restrictions ein in der ausgeschriebenen Form. Ich
empfehle aber auch, einen sprechenden Namen für die Tabelle zu geben,
sonst weisst du nicht mehr, wofür der Check ist:

check_sender_access hash:/etc/postfix/sender_blacklist

Insgesamt also:

smtpd_recipient_restrictions =
	permit_mynetworks,
	reject_unauth_destination
	check_sender_access hash:/etc/postfix/sender_blacklist

> smtpd_soft_error_limit = 3
> smtpd_use_tls = no

Ist default, kannst du auch weglassen.

> strict_8bitmime = no

Ist default, kannst du auch weglassen.

> strict_rfc821_envelopes = no

Ist default, kannst du auch weglassen.

> transport_maps = hash:/etc/postfix/transport
> 

Hast du diesen Server mit der Konfiguration "geerbt" von deinem Vorgänger?
Gibt es irgendeine Doku, warum die Parameter so seltsam gesetzt wurden?

Je nachdem, welchen Stellenwert Mail bei euch hat, würde ich dir unbedingt
empfehlen, das Postfix-Buch entweder von Peer oder das von Ralph und
Patrick zu lesen. Gerade am Anfang sollte es dir bzw. deiner Firma die 50
Euro oder weniger wert sein.

Wenn Mails für euch wichtig sind, empfehle ich auch einen Wochenend-Kurs
bei Peer mitzumachen. Danach hat du einen ganz anderen Einblick in die
Verwaltung von Postfix/Amavisd-new Servern.

Ackere dich mal durch meine Kommentare und die Postfix-Doku auf
http://www.postfix.org/documentation.html. Wietse achtet sehr darauf, dass
die Dokumentation immer aktuell und korrekt ist. Nutze es, es lohnt sich!


-- 
Sandy

Antworten bitte nur in die Mailingliste!
PMs bitte an: news-reply2 (@) japantest (.) homelinux (.) com




Mehr Informationen über die Mailingliste Postfixbuch-users