Відправлення листів з різних доменів через ssmtp
Раніше я вже писав статтю про те, як відправляти пошту з сайту не піднімаючи повноцінний поштовий сервер, користуючись реле від yandex. Там ми використовували "заглушку" ssmtp. вельми занедбану, але справляється зі своїми функціями.

Тепер ось виникло питання - а як тепер організувати відправку листів. якщо у нас є кілька доменів (сайтів)?
Для одного домену проблем немає - просто вказуємо в конфіги аутентифікаційні дані для релея. Але якщо доменів кілька - то другий раз ці дані вказати не вийде, підтримується тільки одноразове згадка керуючих інструкцій.
А відправляти пошту з іншого домену не вийде, тому що публічні релеї не приймають пошту з іншим "From" (відмінним від аутентифицироваться користувача).
Створюємо різні конфігураційні файли для кожного домена:
# Cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp-domain1.conf
# Cp /etc/ssmtp/ssmtp.conf /etc/ssmtp/ssmtp-domain2.conf
У кожному конфіге вказуємо свої аутентифікаційні дані.
У файлі / etc / ssmtp / revaliases вкажемо обидва домени:
root: webmaster @ domain1.ru: smtp.yandex.ru: 465
root: webmaster @ domain2.ru: smtp.mail.ru: 465
Тепер завдання. Як нам вказати довільний конфиг для ssmtp?
/ Usr / sbin / ssmtp -t -C
Власні налаштування PHP в залежності від віртуального хоста
Тепер треба змусити nginx (у мене nginx, тому наводжу для нього) міняти цей параметр в залежності від домену.
Відкриваємо конфігураційні файли nginx (де опис віртуальних хостів) і додаємо для кожного домена відповідний рядок:
fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / ssmtp -t -C / etc / ssmtp / ssmtp-domain1.conf";
У іншого домену:
fastcgi_param PHP_VALUE "sendmail_path = / usr / sbin / ssmtp -t -C / etc / ssmtp / ssmtp-domain2.conf";
Тепер для кожного домена застосовується власний шлях до sendmail (а значить і параметри аутентифікації).
Для перевірки кидаємо в document_root каталоги кожного домена файли mail.php такого змісту:
Вам так само сподобається:





