Linux. Настройка MSMTP для отправки писем PHP mail()

Так вышло, что многие провайдеры и дата-центры блокируют 25 порт для отправки почты. Возможно, у вас нет возможности и желания настраивать отправку почты с вашего сервера посредством exim или sendmail, на помощь приходит msmtp.

Для Centos 7.5 установка выполняется так:

# yum install msmtp

На Ubuntu/Debian установка:

# apt-get install msmtp

Создаем конфигурацию:

$ nano ~/.msmtprc

Добавляем один или все конфигурации друг за другом вписывая свои настройки:

account yandex
logfile /var/log/msmtp.log
host smtp.yandex.ru
port 587
from mail@yandex.ru
keepbcc on
auth on
user mail@yandex.ru
password пароль
tls on
tls_starttls on

account yahoo
tls on
tls_starttls off
tls_certcheck off
auth on
host smtp.mail.yahoo.com
user user1
from user1@yahoo.com
password yourYahooPa5sw0rd

account gmail
tls on
tls_certcheck off
auth on
host smtp.gmail.com
port 587
user user1@gmail.com
from user1@gmail.com
password yourgmailPassw0rd

Далее:

# chmod 600 ~/.msmtprc

Перед проверкой, делаем тестовое письмо:

echo -e «From: chubaka@kremlin.ru \n\
To: info@fatnev.ru \n\
Subject: Приветики!! \n\
\n\
Это сообщение отправлено с использованием MSMTP с gnvs.ru» >> fatnev_email.txt

Теперь можно отправить письмо:

cat sample_email.txt | msmtp —debug -a gmail info@fatnev.ru

Обратите внимание, что необходимо выбрать при помощи какой конфигурации нужно отправить почту -a gmail.

Можно также проверить отправку почты так:

echo «Привет от George» | msmtp —debug -a default info@admin.net
cp -p ~/.msmtprc /etc/.msmtp_php
chown www-data:www-data /etc/.msmtp_php

Даём права Apache, у вас может работать от другого пользователя, например apache:apache.

Редактируем 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"

Создаём log-файл:

# touch /var/log/msmtp.log
# chown www-data:www-data /var/log/msmtp.log

и перезагружаем Apache:

# systemctl restart httpd

Готово.

PS: простая отправка почты через php-mail:

php -r "mail('test@email.com', 'Test', 'Test');" 

Количество просмотров: 63


Понравилась статья?

Возврат к списку