Skip to main content

Zend_Mail, Postfix und strict_mime_encoding_domain

· One min read
Stephan Hochdörfer

Beim Versuch eine Multipart Message via Zend_Mail und den SMTP Transport über einen Postfix Mailserver eines unserer Kunden zu senden trat folgender Fehler auf. Postfix meldete "invalid message/* or multipart/* encoding domain" und verweigerte die Annahme der E-Mail. Nicht-Multipart Messages konnten hingegen problemlos versandt werden.

Nach ein wenig Recherche war klar dass an diesem Verhalten die Konfigurationseinstellung strict_mime_encoding_domain = true schuld ist. Es handelt sich dabei um ein Feature von Postfix das "mails from poorly written software" blockiert und zwar genau dann wenn ein fehlerhafter Content Transfer Encoding an den Postfix Server gesendet wird.

Die Lösung ist im Grunde recht einfach:

class My_Mail_Transport_Postfix extends Zend_Mail_Transport_Smtp
{
/**
* @see Zend_Mail_Transport_Abstract#_getHeaders
*/
protected function _getHeaders($boundary)
{
parent::_getHeaders($boundary);
if (null !== $boundary) {
unset($this->_headers['Content-Transfer-Encoding']);
unset($this->_headers['Content-Disposition']);
}
return $this->_headers;
}
}