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@gnvs.ru \n\
Subject: Приветики!! \n\
\n\
Это сообщение отправлено с использованием MSMTP с fatnev.ru» >> fatnev_email.txt	
	

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


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

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

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


		
		echo «Привет от GNVS» | msmtp —debug -a default info@admin

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');"	
	

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


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

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