Содержимое записей необходимо взять со страницы настроек почтового домена на сайте pdd.yandex.ru. Если всё хорошо, переходим непосредственно к postfix. Добавляем в конец конфигурационного файла
/etc/postfix/main.cf
# pdd.yandex.ru: SMTP-Relay config
relayhost =
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_type = cyrus
smtp_sasl_mechanism_filter = login
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
sender_canonical_maps = hash:/etc/postfix/canonical
smtp_generic_maps = hash:/etc/postfix/generic
# Яндекс не принимает plain-text сообщений, только зашифрованные
smtp_use_tls = yes
ЕСЛИ почтовый домен совпадает с hostname сервера, меняем параметр mydestination (чтоб не падали в локальную очередь)
1 2 3 |
mydestination = localhost.$mydomain, localhost |
Если этого не сделать, сервер не сможет слать письма в свой домен, т.к. будет искать адресатов в таблице локальных пользователей — разумеется безуспешно.
/etc/postfix/canonical
1 2 3 |
@example.com username@example.com |
/etc/postfix/generic
1 2 3 |
root@localhost root@example.com |
/etc/postfix/sasl_passwd
smtp.yandex.ru username@example.com:SuperPa$$word
/etc/postfix/sender_relay
@example.com smtp.yandex.ru
Компилируем таблицы в понятный postfix формат:
1 2 3 4 5 6 |
postmap /etc/postfix/canonical postmap /etc/postfix/generic postmap /etc/postfix/sasl_passwd postmap /etc/postfix/sender_relay |
Перегружаем postfix:
1 2 3 |
service postfix restart |
1 2 3 |
echo "Hello world" | mail -s "Test message from Yandex Relay" private_user@gmail.com |
1 2 3 4 |
tail -f /var/log/maillog | grep "status=sent" Feb 21 21:46:58 example postfix/smtp[12505]: 98E6A412B0: to=, relay=smtp.yandex.ru[93.158.134.38]:25, delay=558, delays=557/0.03/0.49/0.62, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued on smtp3m.mail.yandex.net as 1424573218-tNOrxpBlCe-kvfWmMS7) |
Если что-то пошло не так
1 2 3 4 |
Feb 21 21:34:04 example postfix/smtp[12070]: warning: SASL authentication failure: No worthy mechs found Feb 21 21:34:04 example postfix/smtp[12070]: 914EF41295: SASL authentication failed; cannot authenticate to server smtp.yandex.ru[213.180.204.38]: no mechanism available |
Необходимо доустановить в систему недостающие SASL-библиотеки:
1 2 3 |
yum install cyrus-sasl{,-plain} |
1 2 3 |
Feb 21 21:37:40 example postfix/smtp[12233]: 98E6A412B0: SASL authentication failed; server smtp.yandex.ru[213.180.204.38] said: 530 5.7.7 Email sending without SSL/TLS encryption is not allowed. Please see: http://help.yandex.ru/mail/mail-clients/ssl.xml |
В конф. файле забыт параметр:
/etc/postfix/main.cf
smtp_use_tls = yes
а если host smtp.yandex.ru[87.250.250.38] said: 553 5.7.1 Sender address rejected: not owned by auth user. (in reply to MAIL FROM command))
Имя, с которым вы авторизовались не совпадает с именем почтового ящика.
Например, авторизовались вы с mail@yandex.ru, а отправляете с mail2@yandex.com
В результате сервер говорит — not owned by auth user (вы не является владельцем авторизовавшегося пользователя)
имя для авторизации я прописываю в /etc/postfix/sasl_passwd, а имя для отправки он берет из hostname freepbx.sangoma.local. в итоге от email@gmail.com уходит, а из яндекс почты для домена email@company.ru выдает вышеуказанную ошибку. вопрос -какое имя прописывать в hostname?
Предлагаю сделать так в /etc/postfix/main.cf
myhostname = freepbx.sangoma.local
mydomain = company.ru
relayhost = smtp.gmail.com:587
Спасибо работает, но письма приходят с добавлением root как изменить root перед емайлом?