пятница, 14 апреля 2017 г.

ssmtp отправка почты с нескольких сайтов на одном хостинге

В примере используется почта для домена от Яндекса.
Для каждого пользователя (сайта) user1.tld и user2.tld настроена своя почта для домена.

Конфигураци SSMTP

Нужно создать несколько конфигов ssmtp для каждого VirtualHost

Конфигурация 1
nano /etc/ssmtp/ssmtp-user1.conf
root=mail@user1.tld
mailhub=smtp.yandex.ru:465
RewriteDomain=user1.tld
Hostname=mail@user1.tld
# Set this to never rewrite the "From:" line (unless not given) and to
# use that address in the "from line" of the envelope.
FromLineOverride=YES
AuthUser=mail@user1.tld
AuthPass=passwd
AuthMethod=LOGIN
UseTLS=YES
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
Debug=NO
Конфигурация 2
nano /etc/ssmtp/ssmtp-user2.conf
root=mail@user2.tld
mailhub=smtp.yandex.ru:465
RewriteDomain=user2.tld
Hostname=mail@user2.tld
# Set this to never rewrite the "From:" line (unless not given) and to
# use that address in the "from line" of the envelope.
FromLineOverride=YES
AuthUser=mail@user2.tld
AuthPass=passwd
AuthMethod=LOGIN
UseTLS=YES
TLS_CA_File=/etc/pki/tls/certs/ca-bundle.crt
Debug=NO

Вторая конфигурация SSMTP (Revaliases)
nano /etc/ssmtp/revaliases

root:mail@user1.tld:smtp.yandex.ru:465
root:mail@user2.tld:smtp.yandex.ru:465

Что бы письма были отправлены не от пользователя apache (www-data) изменим комментарий пользователю. 
Этот комментарий будет виден в имени отправителя.

chfn -f "Web Email" apache

Конфигурация APACHE 

Для каждой конфигурации сайта (VirtualHost) нужно указать конфигурацию ssmtp.

nano /etc/httpd/conf.d/user1.tld.conf

<VirtualHost *:8080>
ServerName user1.tld#****
</VirtualHost>
<Directory "/home/user1.tld/html">
php_admin_value sendmail_path "/usr/sbin/ssmtp -t -C/etc/ssmtp/ssmtp-user1.conf"
php_admin_value sendmail_from "mail@user1.tld"
#****
</Directory>

nano /etc/httpd/conf.d/user2.tld.conf

<VirtualHost *:8080>
ServerName user2.tld#****
</VirtualHost>
<Directory "/home/user2.tld/html">
php_admin_value sendmail_path "/usr/sbin/ssmtp -t -C/etc/ssmtp/ssmtp-user2.conf"
php_admin_value sendmail_from "mail@user2.tld"
#****
</Directory>

Перезапустить apache и проверить отправку писем
<?
mail('your@email.com', 'Test From Your-Site', 'Test Message from Sendmail by PHP');
?>

Комментариев нет: