Если ваш провайдер предоставляет релей - можно им воспользоваться. Хотя процент отлупов на релеях обычно достаточно велик, часть писем все же будет доставлена)))
Если релея нет, можно прибегнуть к помощи сторонних ESP, таких как Amazon SES, Mailgun, SendGrid, Mandrill, MailJet и т.д.
Рассмотрим первых двух.
Amazon SES.
SES позволяет использовать глобальный логин/пароль для отправки почты с любого верифицированного домена. Поэтому сильно можно не заморачиваться.
В конфиг exim добавляем следующие секции (каждый располагаем в начале своих секций):
Авторизашка:
Код: Выделить всё
ses_login:
driver = plaintext
public_name = LOGIN
client_send = ": ACCESS_KEY_ID : ACCESS_KEY_SECRET"
server_set_id = $auth1
Код: Выделить всё
ses_route:
driver = manualroute
domains = ! +local_domains
transport = ses_transport
route_list = * email-smtp.<region>.amazonaws.com
ignore_target_hosts = 127.0.0.0/8
no_more
no_verify
Код: Выделить всё
ses_transport:
driver = smtp
port = 2587
hosts = email-smtp.<регион>amazonaws.com
hosts_require_auth = $host_address
hosts_require_tls = $host_address
1) Отныне каждый почтовый домен нужно будет верифицировать в SES
2) Редиректы не будут работать.
Доки
Mailgun
С Mailgun все немножко сложнее, нежели с SES, поскольку в отличии от последнего mg выделяет уникальные логин/пароль на каждый зареганный домен.
Создадим файлики /etc/exim/smartdomains и /etc/exim/smartdomains_exclude
В первом описываем домены и их данные из mailgun:
Код: Выделить всё
mydomain.com: smtp_host=smtp.mailgun.org smtp_user=postmaster@mg.mydomain.com smtp_pass=пароль
Код: Выделить всё
local.domain:local.domain
Код: Выделить всё
domainlist non_smarthost = lsearch;/etc/exim/smartdomains_exclude
Код: Выделить всё
mailgun_route:
driver = manualroute
domains = ! +local_domains : ! +non_smarthost
condition = ${extract{smtp_host}{${lookup{$sender_address_domain}lsearch{/etc/exim/smartdomains}{$value}fail}}}
route_list = "* ${extract{smtp_host}{${lookup{$sender_address_domain}lsearch{/etc/exim/smartdomains}{$value}fail}}} bydns"
transport = mailgun_transport
Код: Выделить всё
mailgun_transport:
driver = smtp
port = 587
hosts_try_auth = $host_address
hosts_require_tls = $host_address
Код: Выделить всё
mailgun_auth:
driver = plaintext
public_name = LOGIN
hide client_send = ": ${extract{smtp_user}{${lookup{$sender_address_domain}lsearch{/etc/exim/smartdomains}{$value}fail}}} : ${extract{smtp_pass}{${lookup{$sender_address_domain}lsearch{/etc/exim/smartdomains}{$value}fail}}}"
Доки