В один день понадобилось на сервере с PHP под CentOS отправлять почту через внешний STMP. Причем каждый сайт должен отправлять от своего домена и очень желательно, что бы почта не попадала в папку SPAM на сервера получателя. Поднимать полноценные сервера такие как Exim или Postfix для таких целей не имеет смысла т.к. из "коробки" они не удовлетворяют всем требованиям и можно потратить много времени на корректную настройку и борьбу со спамом.
Мы пойдем путем подключения почты для доменов от Яндекса. Нужно всего лишь добавить NS Яши в дополнение к текущим нс-серверам домена и подтвердить любым доступным способом права на этот самый домен.
Итак - мы устанавливаем msmtp. Он есть и под *nix и под Windows.
В зависимости от вашей ОС вариант установки отличается только командами. Т.е. у нас центос - пишем:
yum install msmtp
После установки узнаем путь к конфигурационному файлу:
$ msmtp --version
...
System configuration file name: /etc/msmtprc
User configuration file name: /home/artkiev.com/.msmtprc
Теперь создадим этот файл и файл лога
$ touch /etc/msmtprc
$ touch /var/log/msmtp.log
Пример конфигурации:
defaults
tls on
tls_starttls on
tls_certcheck off
logfile /var/log/msmtp.log
account test_artkiev
host smtp.yandex.ru
port 25
auth on
user info@****.com.ua
password ************
from info@****.com.ua
account other_mail_artkiev
host smtp.yandex.ru
port 25
auth on
user order@**.org.ua
password *******
from order@**.org.ua
account default : other_mail_artkiev
После этого нужно сделать симлинки sendmail:
$ ln -s /usr/bin/msmtp /usr/sbin/sendmail
$ ln -s /usr/bin/msmtp /usr/bin/sendmail
$ ln -s /usr/bin/msmtp /usr/lib/sendmail
После этого необходимо подменить отправку в php.ini
:
sendmail_path = "/usr/bin/msmtp -t"
Для виртуалхостов вызываем нужную нам секцию отправки:
php_admin_value sendmail_path "/usr/bin/msmtp -a other_mail_artkiev -t"
Перезагружаем апач и тестируем отправку