Предварительные действия
Для настройки пересылки вам необходима работающая учетная запись (имя пользователя и пароль) на другом почтовом сервере. В ниже представленном руководстве я использую smtp.example.com как почтовый сервер, через который будет происходить пересылка. Аккаунт на этом сервер, через который будет происходить отправка, будет называться test@example.com. В моем руководстве, также рассматривается случай, когда удаленный почтовый сервер для пересылки работает по STARTTLS (или SSL). Используемая ОС в моем случае — Ubuntu 14.04, агент передачи почты по умолчанию (MTA) — Postfix.
Настройка
Для начала добавим необходимые настройки в конфигурационный файл Postfix. Для это зайдем в файл /etc/postfix/main.cf и внизу добавим следующие строчки:
relayhost = smtp.example.com smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/saslpw smtp_sasl_security_options = noanonymous sender_canonical_maps = pcre:/etc/postfix/sender_pcre smtp_use_tls = yes smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt smtp_sasl_mechanism_filter = PLAIN
Проверяем, что сертификат по пути /etc/ssl/certs/ca-certificates.crt существует. Если нет — устанавливаем OpenSSL.
# apt-get install openssl
Далее создадим необходимые файлы, которые мы указали в конфигурационном файле Postfix.
Создаем файл saslpw:
# touch /etc/postfix/saslpw
со следующим содержимым:
smtp.example.com test@example.com:secret_password
— вместо «secret_password» указываем пароль к почтовому ящику, через который будет делаться отправка.
Создаем файл sender_pcre:
# touch /etc/postfix/sender_pcre
со следующим содержимым:
/^[a-z,0-9]{1,20}\@/ test@example.com
Преобразуем созданные нами файлы в индексированную базу данных для Postfix:
# postmap /etc/postfix/saslpw # postmap /etc/postfix/sender_pcre
В результате появятся еще 2 файла с таким же названием, но расширением .db
Настройку можно считать практически оконченной, осталось перезапустить Postfix:
# /etc/init.d/postfix restart
Проверяем отправку писем с сервера:
echo "test" | mail -s "test" my_email@gmail.com
Вместо my_email@gmail.com необходимо написать почтовый адрес куда вы хотите отправить письмо для проверки.
Возможные проблемы и ошибки
1. Если при попытке перезапуска Postfix возникает ошибка вида:
Nov 28 14:47:30 myserver postfix/cleanup[23440]: warning: pcre:/etc/postfix/sender_pcre is unavailable. unsupported dictionary type: pcre
она означает, что отсутствует необходимый модуль, который необходимо установить следующим образом:
# apt-get install postfix-pcre
2. Если Postfix запускается успешно, письмо вроде бы отправляется, но не приходит — то смотрим лог Postfix’а /var/log/mail.log. Если там есть ошибка такого вида:
SASL authentication failed; cannot authenticate to server no mechanism available
это значит, что отсутствует необходимая библиотека. Установим еще:
# apt-get install libsasl2-modules
После этого еще раз перезапускаем Postfix и еще раз проверяем отправку.