Postfix особенности настройки на mail.ru

email send script postfix unrotable sender sendmail email 550

После базовой настройки отправки почты с хоста yuorsite.ru при отправке на yandex все проходило хорошо, а при отправке на mail.ru в логах ошибка:

550 Unroutable sender address
Оказалось, надо, чтобы имя хоста было прописано в DNS.
То есть, хост yuorsite.ru не определялся через DNS, поэтому почта отвергалась (bounced).

Есть два простых выхода:

  • прописать этот хост в DNS (A-запись)
  • поменять в файле /etc/mailname имя хоста на уже существующее в DNS

При этом надо проверить в настройках /etc/postfix/main.cf все строки, где упоминается mailname, myhostname (строка определения д.б. выше первого упоминания по коду), myorigin, mydestination.
Кроме того, надо привести в соответствие запись о имени хоста в /etc/hosts.
Еще в логах была ошибка, связанная с UTF8 кодировкой:

status=bounced (SMTPUTF8 is required, but was not offered by host mx.yandex.net[77.88.21.89])

Устраняется добавлением параметра в конфигуратор postfix.

smtputf8_enable = no

Пример рабочего конфига: 

myhostname = yuorsite.ru
smtpd_banner = $myhostname ESMTP
biff = no
append_dot_mydomain = no
readme_directory = no
compatibility_level = 2

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtputf8_enable = no

smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

Пример php-скрипта для отладки с html-разметкой:

<?php
$to = 'aizaro@mail.ru';
$subject  = 'Тестовое письмо с HTML';

$message = '
<html>
    <head>
        <title>Тестовое письмо с HTML</title>
        <meta charset="utf8">
    </head>
    <body>
        <p>Пример таблицы</p>
        <table border=1>
            <tr>
                <th>Колонка 1</th><th>Колонка 2</th><th>Колонка 3</th><th>Колонка 4</th>
            </tr>
            <tr>
                <td>Ячейка 1</td><td>Ячейка 2</td><td>Ячейка 3</td><td>Ячейка 4</td>
            </tr>
            <tr>
                <td>Ячейка 5</td><td>Ячейка 6</td><td>Ячейка 7</td><td>Ячейка 8</td>
            </tr>
        </table>
    </body>
</html>
';

$headers[] = 'MIME-Version: 1.0';
$headers[] = 'Content-type: text/html; charset=utf8';
$headers[] = 'To: Receiver <aizaro@mail.ru>';
$headers[] = 'From: Sender <robot@yoursite.ru>';
$headers[] = 'Cc: aizaro@mail.ru';

$result = mail($to, $subject, $message, implode("\r\n", $headers));
echo $result ? 'OK' : 'Error';
?>

Полезные статьи по настройке:

freebsd.org sendmail  - opennet.ru postfix_sasl