Назад | Перейти на главную страницу

Exim Smarthost Несколько доменов и учетных данных Mailgun

У меня есть экземпляр GCP, работающий с whm / cpanel и настройка mailgun с использованием exim для нескольких учетных записей с использованием нескольких доменов.

Текущая настройка работает для всех доменов, но проверяется только для основного домена. Mailgun поддерживает несколько доменов с несколькими учетными данными.

При отправке электронного письма из домена, отличного от 'c ********* t.com', электронные письма имеют VIA в Gmail, потому что header.from не совпадает.

dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=c*****s.com

Снимок экрана "VIA" и "Изображения не отображаются"

Раздел: AUTH

mailgun_login:
driver = plaintext
public_name = LOGIN
hide client_send = : postmaster@c*********t.com : 
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Раздел: ROUTERSTART

mailgun:
driver = manualroute
domains = ! +local_domains
transport = mailgun_transport
route_list = "* smtp.mailgun.org::2525 byname"
host_find_failed = defer
no_more

Раздел: TRANSPORTSTART

mailgun_transport:
driver = smtp
hosts = smtp.mailgun.org
hosts_require_auth = smtp.mailgun.org
hosts_require_tls = smtp.mailgun.org

Любые предложения или альтернативы будут оценены. Спасибо.

ОБНОВИТЬ Текущие ошибки в журнале на основе ответа, приведенного ниже:

LOG: MAIN
  cwd=/usr/local/cpanel/whostmgr/docroot 4 args: /usr/sbin/exim -v -M 
1gPYIq-0001cc-UL
delivering 1gPYIq-0001cc-UL
Transport port=25 replaced by host-specific port=2525
Connecting to smtp.mailgun.org [**.**.**.***]:2525 ... connected
  SMTP<< 220 ak47 ESMTP ready
  SMTP>> EHLO instance-1
  SMTP<< 250-ak47
         250-AUTH PLAIN LOGIN
         250-SIZE 52428800
         250-8BITMIME
         250-ENHANCEDSTATUSCODES
         250-SMTPUTF8
         250 STARTTLS
  SMTP>> STARTTLS
  SMTP<< 220 2.0.0 Start TLS
  SMTP>> EHLO instance-1
  SMTP<< 250-ak47
         250-AUTH PLAIN LOGIN
         250-SIZE 52428800
         250-8BITMIME
         250-ENHANCEDSTATUSCODES
         250 SMTPUTF8
  SMTP>> AUTH LOGIN
  SMTP<< 334 VXNlcm5hbWU6
  SMTP>> *
  SMTP<< 500 5.5.1 Invalid command
  SMTP>> QUIT
  SMTP(close)>>
Transport port=25 replaced by host-specific port=2525
Connecting to smtp.mailgun.org [**.**.**.***]:2525 ... connected
  SMTP<< 220 ak47 ESMTP ready
  SMTP>> EHLO instance-1
  SMTP<< 250-ak47
         250-AUTH PLAIN LOGIN
         250-SIZE 52428800
         250-8BITMIME
         250-ENHANCEDSTATUSCODES
         250-SMTPUTF8
         250 STARTTLS
  SMTP>> STARTTLS
  SMTP<< 220 2.0.0 Start TLS
  SMTP>> EHLO instance-1
  SMTP<< 250-ak47
         250-AUTH PLAIN LOGIN
         250-SIZE 52428800
         250-8BITMIME
         250-ENHANCEDSTATUSCODES
         250 SMTPUTF8
  SMTP>> AUTH LOGIN
  SMTP<< 334 VXNlcm5hbWU6
  SMTP>> *
  SMTP<< 500 5.5.1 Invalid command
  SMTP>> QUIT
  SMTP(close)>>
Transport port=25 replaced by host-specific port=2525
Connecting to smtp.mailgun.org [**.**.**.***]:2525 ... connected
  SMTP<< 220 ak47 ESMTP ready
  SMTP>> EHLO instance-1
  SMTP<< 250-ak47
         250-AUTH PLAIN LOGIN
         250-SIZE 52428800
         250-8BITMIME
         250-ENHANCEDSTATUSCODES
         250-SMTPUTF8
         250 STARTTLS
  SMTP>> STARTTLS
  SMTP<< 220 2.0.0 Start TLS
  SMTP>> EHLO instance-1
  SMTP<< 250-ak47
         250-AUTH PLAIN LOGIN
         250-SIZE 52428800
         250-8BITMIME
         250-ENHANCEDSTATUSCODES
         250 SMTPUTF8
  SMTP>> AUTH LOGIN
  SMTP<< 334 VXNlcm5hbWU6
  SMTP>> *
  SMTP<< 500 5.5.1 Invalid command
  SMTP>> QUIT
  SMTP(close)>>
LOG: MAIN
  == *********@gmail.com R=mailgun T=mailgun_transport defer (-42): authentication required but authentication attempt(s) failed

Отработав ответ Caracos (который я попробовал, но не смог заработать), я смог найти это сообщение на форуме, и после изменения деталей Mailgun он работал как шарм. Мне также нравится это решение, потому что оно при необходимости масштабируется до других служб ретрансляции почты.
https://forums.cpanel.net/threads/how-to-send-email-from-different-domains-using-different-smarthosts.641949/

Я просто обрисую настройки, которые я использовал для Mailgun, но по ссылке вы найдете более подробные объяснения, изображения и другие примеры, такие как Sendgrid, Mailjet и Sendpulse.


  1. В WHM перейдите в «Менеджер конфигурации Exim» (Домашняя страница> Конфигурация службы> Менеджер конфигурации Exim). После этого щелкните вкладку «Расширенный редактор».
    (Возможно, неплохо было бы настройки резервного копирования перед внесением этих изменений)

Раздел: AUTH

#Smart Host Sending
sendbysmarthosts:
driver = plaintext
public_name = LOGIN
hide client_send = : ${extract{user} 
{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}: ${extract{pass}{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}

Раздел: ПРОГРАММЫ

#Smart Host Sending
sendbysmarthostsrouter:
driver = manualroute
domains = ! +local_domains
condition =  "${if eq{${lookup{$sender_address_domain}partial- 
lsearch{/etc/exim_smarthosts}{$value}}}{}{false}{true}}"
ignore_target_hosts = 0.0.0.0 : 127.0.0.0/8
headers_add = "${perl{mailtrapheaders}}"
transport = sendbysmarthoststransport
route_list = * ${extract{smtp} {${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}

Раздел: TRANSPORTSTART

#Smart Host Sending
sendbysmarthoststransport:
driver = smtp
port = ${extract{port} 
{${lookup{$sender_address_domain}lsearch{/etc/exim_smarthosts}}}}
hosts_require_auth = $host_address
hosts_require_tls = $host_address

Прокрутите страницу вниз, сохраните конфигурацию Exim и убедитесь, что Exim перезапускается.


  1. Создайте файл с именем «exim_smarthosts» в каталоге «/ etc» с Mailgun или другими параметрами smarthost.

Это пример данных, смените домен, пользователя и пройдите.

#Sending by Mailgun
domain1.com: domain=domain1.com user=postmaster@mg.domain1.com pass=MAILGUN_password smtp=smtp.mailgun.org port=587
domain2.com: domain=domain2.com user=postmaster@mg.domain2.com pass=MAILGUN_password smtp=smtp.mailgun.org port=587
domain3.com: domain=domain3.com user=postmaster@mg.domain2.com pass=MAILGUN_password smtp=smtp.mailgun.org port=587

В третьем примере используются учетные данные domain2.com для domain3.com, это будет работать, но электронные письма будут содержать через mg.domain2.com


Теперь электронная почта, отправленная из учетных записей электронной почты, созданных cPanel в их соответствующих доменах, будет перехвачено exim (разрешено подключаться к внешним SMTP-серверам) и ретранслируется через Mailgun, если учетные данные в / etc / exim_smarthosts верны и настройки DNS верны. Однако настройки безопасности WHM по-прежнему ограничивают все учетные записи cPanel от подключения к любой внешней SMTP-службе, поэтому нам нужно сделать еще один шаг, чтобы использовать вышеуказанную настройку для электронной почты на основе приложений.

К вашему сведению: это настройка, которая должна быть держался ограничение внешних SMTP-подключений
WHM Admin >> Настройки настройки >> Почта >> Ограничить исходящий SMTP для root, exim и mailman

Чтобы отправить электронное письмо из Joomla, Wordpress или другой CMS или приложения, выполните следующие действия.


  1. a) Создайте учетную запись электронной почты в cPanel и получите безопасные учетные данные для входа.
    cPanel >> Учетные записи электронной почты >> (Новое письмо) >> Подключить устройства >> Настроить почтовый клиент

    б) Используйте это имя пользователя, пароль и данные сервера исходящей почты в своей Joomla, WordPress или другой CMS / приложении / плагине.


Теперь ваши CMS, плагины и приложения подключаются только к внутренней учетной записи SMTP, но когда эта учетная запись отправляется, она передается через внешнюю настройку SMTP на первых шагах.

БОЛЬШОЕ СПАСИБО DigitalComunic на форумах cPanel, чья кропотливая работа и устранение неполадок дали нам надежный обходной путь, который будет полезен на долгие годы !!

У меня такая же настройка (VPS + WHM / cPanel + Exim + Mailgun), и после проведения некоторых онлайн-исследований я нашел несколько полезных веб-сайтов по этой теме и смог выйти с правильной конфигурацией. Ниже приведены решения, которые я сейчас использую на своем VPS, и надеюсь, что они также помогут вам. Это должно решить вашу проблему «через» и может также решить периодически возникающую ошибку «550 5.7.1 Relaying denied» от Mailgun:



Перейдите в «Редактор конфигурации Exim» в WHM. Выберите «Расширенный редактор» и вставьте конфигурацию ниже:



Раздел: AUTH

mailgun_login:
driver = plaintext
public_name = LOGIN
hide client_send = ": ${extract{login}{${lookup{$sender_address_domain}lsearch{/etc/exim_mailgun}{$value}fail}}} : ${extract{password}{${lookup{$sender_address_domain}lsearch{/etc/exim_mailgun}{$value}fail}}}"



Раздел: ROUTERSTART

mailgun:
driver = manualroute
domains = ! +local_domains
transport = mailgun_transport
route_list = "* smtp.mailgun.org::587 byname"
host_find_failed = defer
no_more



Раздел: TRANSPORTSTART

mailgun_transport:
driver = smtp
hosts = smtp.mailgun.org
hosts_require_auth = smtp.mailgun.org
hosts_require_tls = smtp.mailgun.org



Затем создайте файл с именем / etc / exim_mailgun и вставьте содержимое, аналогичное структуре ниже (замените его учетными данными для входа в домен Mailgun, которые были проверены):

domain1.com:    username=postmaster@mg.domain1.com     password=abcdefghi
domain2.com:    username=postmaster@mg.domain2.com     password=jklmnopqr



ОБНОВИТЬ:

Как прокомментировал @Supamic, я иногда сталкивался с упомянутой им ошибкой, когда электронное письмо было отправлено системой доставки почты (Mailer-Daemon@hostname.yourserver.com) на мою внешнюю учетную запись электронной почты (Gmail):

authentication required but authentication attempt(s) failed


Я предполагаю, что это, возможно, связано с частью Mailer-Daemon «Идентификация отправителя», поскольку Exim не смог получить учетные данные для входа из моего / etc / exim_mailgun, поскольку нет домена отправителя:

“Sender identification U=mailnull D=-system- S=mailnull”

Чтобы решить эту проблему, техническая поддержка cPanel порекомендовала мне перенаправить всю электронную почту от Mailer-Daemon на локальный адрес электронной почты, размещенный на моем сервере, а затем использовать функцию пересылки для передачи электронной почты в мою учетную запись Gmail.



Что касается периодической ошибки "550 5.7.1 Relaying denied", то после обращения в службу технической поддержки cPanel они дали мне рекомендацию принудительно установить smtp.mailgun.org на один IP, установив статический IP в / etc / hosts вместо позволяя Exim разрешить smtp.mailgun.org на несколько IP-адресов.

Ошибка аутентификации начнет происходить, когда exim разрешит smtp.mailgun.org на несколько IP-адресов. Служба поддержки cPanel не смогла указать точную причину ошибки «550 5.7.1 Relaying denied». Возможно, что-то не так с Mailgun, поддерживающим аутентификацию в своей избыточной SMTP-инфраструктуре.

Вы можете разрешить IP-адреса SMTP-сервера Mailgun, используя любую из следующих команд:

nslookup smtp.mailgun.org

dig +short smtp.mailgun.org @resolver1.opendns.com


Используйте один из IP-адресов из результата и поместите его в файл / etc / hosts:

xxx.xxx.xxx.xxx     smtp.mailgun.org



И я хочу повторить @ Supamic's БОЛЬШОЕ СПАСИБО к удивительному Команда технической поддержки cPanel. Их самоотверженность в устранении неполадок заслуживает высокой оценки.