An neuen Exchange-Systemen 2010 SP1 scheitert die dynamische Empfängerüberprüfung von Postfix mit der Meldung "lost connection with ... while sending RCPT TO". Ursache ist die Tatsache, daß Exchange das Command-Pipelining sehr großzügig handhabt und die Verify-Verbindungen von Postfix vorzeitig trennt. Im Logfile von Postfix sind die Zieladressen dann plötzlich unzustellbar:
Apr 18 01:11:33 mail postfix/smtp[29299]: CB1223A942: to=<user@example.com>, relay=exchange.example.com[192.168.10.20]:25, delay=0.01, delays=0/0/0/0, dsn=4.4.2, status=undeliverable (lost connection with exchange.example.com[192.168.10.20] while sending RCPT TO)
Debuggt man das ganze, so stellt man fest: Exchange announct Command-Pipelining. Postfix nutzt das natürlich für seine Verify-Mails und sendet die komplette SMTP-Kommandoabfolge in einem Block:
postfix/smtp[29299]: > : MAIL FROM:<address-verify@example.com> postfix/smtp[29299]: > : RCPT TO:<user@example.com> postfix/smtp[29299]: > : RSET postfix/smtp[29299]: > : QUIT
Exchange jedoch arbeitet diese Kommandos nicht in der Reihenfolge ab, sondern nimmt das zuletzt gesendete "QUIT" als Anlaß dafür, bereits sofort die Verbindung wieder zu kappen, ohne sich um die zuvor gesendeten und sich um die noch in der Pipeline befindlichen Kommandos zu kümmern:
postfix/smtp[29299]: < : 221 2.0.0 Service closing transmission channel
Postfix kann darum nichts mehr verifizieren.
Am besten ist es wohl, Command Pipelining zum Exchange-Server abzuschalten. Das läßt sich leicht über einen passenden Eintrag in der main.cf oder master.cf lösen:
relay unix - - n - - smtp -o smtp_discard_ehlo_keywords=pipelining
Wer ein sauberes Setup aufgebaut hat, sollte eh die Transport-Methode "relay" zum Exchange nutzen, und darum folgenden Eintrag in der master.cf haben:
smtp unix - - n - - smtp -o smtp_discard_ehlo_keywords=pipelining
Wer das nicht sauber aufgebaut hat und eingehende E-Mails genauso wie für ausgehende E-Mails nur die Transport-Methode "smtp" nutzt, der muß natürlich den smtp-Eintrag ergänzen. Der Verlust von ausgehendem Command Pipelining ist jetzt auch kein Weltuntergang.
Kommentare