Progetto

Generale

Profilo

Configurare Postfix per correggere un bug di Exchange per i messaggi 8BITMIME

Alcune versioni di Exchange hanno un'errata implementazione dell'RFC 1854 e crea dei problemi perché non sono in grado di accettare messaggi codificati con 8BITMIME pur annunciandone la possibilità dopo l'EHLO.

Quando ricevono uno di questi messaggi i server smtp hanno quindi due opzioni: convertire il messaggio a 7 bit oppure segnalare un errore; exchange adotta quest'ultimo sistema.
La soluzione è quindi di dire a postfix di non chiedere informazioni al server exchange dopo l'EHLO. In questo modo a postfix l'altro server risulterà impossibilitato ad accettare messaggi in 8BITMIME e farà lui stesso la conversione a 7 bit.

Risulta comodo creare un transport apposito per i server che hanno questo problema, lasciando la piena funzionalità per tutti gli altri.

In /etc/postfix/master.cf bisogna copiare la riga che inizia e termina con smtp, rinominandola ed aggiungendo l'opzione opportuna:

exchange  unix  -       -       -       -       -       smtp -o smtp_never_send_ehlo=yes

In /etc/postfix/main.cf va indicato il file da usare come transport_map con la direttiva:

transport_maps = hash:/etc/postfix/transport

Infine, va creato il file /etc/postfix/transport con contenuto:

broken.site.tld     exchange:

È quindi necessario lanciare il comando

postmap /etc/postfix/transport

e poi riavviare postfix in modo che ricarichi la configurazione.

In questo modo postfix invierà tutta la posta per il dominio broken.site.tld usando il transport che abbiamo creato e chiamato exchange, utilizzando quindi l'opzione smtp_never_send_ehlo=yes.

Il tipico messaggio di errore che si riceve dai server "broken" è questo:

Reporting-MTA: dns;smtpout14.broken.tld
Received-From-MTA: dns;FBCMFE02B07.fbc.local
Arrival-Date: Thu, 2 Feb 2006 10:15:44 +0100

Final-Recipient: rfc822;user@broken.tld
Action: failed
Status: 5.6.1
Diagnostic-Code: smtp;554 5.6.1 Body type not supported by Remote Host