Postfix — отправляем почту через yandex smtp
Сегодня я расскажу, как научить Ваш сервер с Postfix отправлять почту через почтовый сервис Яндекса.
Для чего это нужно ?
- Если к Вашему серверу не привязан никакой домен или у него нет своего внешнего IP.
- Если Вам нужна гарантия, что почта выходящая с сервера не попадет в СПАМ.
- И еще много разнообразных причин.
Ставить Postfix и настраивать его для отправки писем через smtp.yandex.ru будем на Ubuntu, т.к. я настраивал именно на ней.
Для начала нам нужно установить пакет Stunnel4, для соединения с smtp.yandex.ru через SSL.
apt-get install stunnel4
После успешной установки создаем конфигурационный файл:
vim /etc/stunnel/yandex.conf
С таким содержанием:
[smtp]
client = yes
accept = 127.0.0.1:25025
connect = smtp.yandex.ru:465
И запускаем сервес:
service stunnel4 start
Теперь приступим к установке самого сервера Postfix с возможностью авторизации SASL:
apt-get install postfix sasl2-bin
В процессе установки Вам будут заданны несколько вопросов.
Теперь самое главное, в конфигурационный файл (/etc/postfix/main.cf) нужно добавить эти строки, я добавлял в самый конец файла:
smtp_sender_dependent_authentication = yes
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_type = cyrus
smtp_sasl_security_options = noanonymous
И поменять в этом файле значение этой строчки:
relayhost = localhost:25025
Которая говорит нашему серверу, что соединяться надо через stunnel4.
Так же нужно создать еще два файла:
/etc/postfix/sender_relay — этот файл говорит, что если отправитель my_email@yandex.ru, то его нужно отправлять через яндекс.
my_email@yandex.ru smtp.yandex.ru
/etc/postfix/sasl_passwd — здесь мы указываем логин и пароль для smtp.yandex.ru
smtp.yandex.ru my_email@yandex.ru:MyPaSSorD
Теперь нам нужно подготовить эти файлы:
postmap /etc/postfix/sender_relay
postmap /etc/postfix/sasl_passwd
Вот и все, теперь можно запускать наш сервер Postfix в работу:
service postfix restart
И не забудьте, что отправлять Вы должны от пользователя указанного в конфигах (my_email@yandex.ru).
не робит ,думаю,что виновен стунель. А без него можно как-то?
Спасибо за статью! Но у меня не все прошло гладко.
1. Потребовался сертификат stunnel
Добавить в /etc/stunnel/yandex.conf
cert = /etc/stunnel/stunnel.pem
2. В файле /etc/postfix/sasl_passwd указать
localhost my_email@yandex.ru:MyPaSSorD
Именно localhost, если указать другое — будет ошибка 503 send auth command first
Пожалуй добавлю еще несколько строчек конфигурации main.cf
inet_interfaces = 127.0.0.1
inet_protocols = all
Создать stunnel сертификат
openssl genrsa -out key.pem 2048
openssl req -new -x509 -key key.pem -out cert.pem -days 1095
cat key.pem cert.pem >> /etc/stunnel/stunnel.pem
Не правильная у Вас статья
Это не нужно:
sender_dependent_relayhost_maps = hash:/etc/postfix/sender_relay
В /etc/postfix/sasl_passwd указываем:
[127.0.0.1]:25 my_email@yandex.ru:MyPaSSorD
А как быть если хотим использовать несколько ящиков? И нужна аутентификация от разных аккаунтов.
Спасибо что подняли такую важную и нужную тему. Действительно, со стандартным отправщиком почты в вордпрессе есть проблемы с доставкой почты. Особенно если почту отправляет не пордпрес, а к примеру сторонний плагин, такой как Contact Form 7.
Такая же проблема, не работает Contact Form 7, что делать? Или может есть какой то аналог Contact Form чтобы через него пользователи могли отправлять сообщения?
на несколько ящиков просто создаются дубли строк с указанием нового ящика в каждой новой строке, сколько нужно столько и пишем. Вуаля!!