Большинство хостинг провайдеров и крупные Дата Центры, часто блокируют 25 порт для отправки почты. Или же по другим причинам у Вас нет возможности или желания настраивать отправку писем на вашем сервере средствами почтовых сервисов exim или sendmail, тогда msmtp самое простое решение.
Для начала необходимо установить msmtp:
Centos 6.5 - 7 установка выполняется так:
yum install msmtp
Ubuntu/Debian установка при помощи apt-get:
apt-get install msmtp
Настраиваем:
vi ~/.msmtprcили
nano ~/.msmtprc
Заполняем файл .msmtprc.
Для Yandex:
account yandex logfile /var/log/msmtp.log host smtp.yandex.ru port 587 from usr@yandex.ru keepbcc on auth on user usr@yandex.ru password PAss tls on tls_starttls on
Для Yahoo:
account yahoo tls on tls_starttls off tls_certcheck off auth on host smtp.mail.yahoo.com user usr from usr@yahoo.com password yourYahooPass
Для Gmail:
account gmail tls on tls_certcheck off auth on host smtp.gmail.com port 587 user usr@gmail.com from usr@gmail.com password yourgmailPass
И устанавливаем права на файл:
chmod 600 ~/.msmtprc
Для проверки функционирования, сделаем тестовое письмо:
echo -e "From: test@test.ru \n\ To: test@test.com \n\ Subject: Hello World \n\ \n\ This email was sent using MSMTP via mail.com.ru." >> sample_email.txt
Попробуем его отправить:
cat sample_email.txt | msmtp --debug -a gmail test@test.com
Обратите внимание, что необходимо выбрать аккаунт указав параметр -a gmail, если ввели более одного в файл .msmtprc
Можно также проверить отправку почты так:
echo "hello from mail.com.ru." | msmtp --debug -a default test@test.com
cp -p ~/.msmtprc /etc/.msmtp_php chown www-data:www-data /etc/.msmtp_php
Устанавливаем права для Apache т.к. он может быть запущен от имени другого пользователя, например apache:apache
Редактируем php.ini:
nano /etc/php5/php.iniили
nano /etc/php.ini
И редактируем sendmail_path =
sendmail_path = "/usr/bin/msmtp -C /etc/.msmtp_php --logfile /var/log/msmtp.log -a gmail -t"
Создаём лог файл
touch /var/log/msmtp.log chown www-data:www-data /var/log/msmtp.log
и перезагружаем Apache:
service httpd restart