Настройка сервера отправки почты с шифрованием SPF и DKIM в связке с GMail

К  примеру нужен сервер (назовем его site.domain.ru) для отправки.
Для этого:

I. Установим exim4 (на момент написания статьи актуальная версия 4.80)

sudo apt-get install exim4

II. Настраиваем
Для настройки Exim4 выполните следующую команду:

sudo dpkg-reconfigure exim4-config

нам нужно настроить exim для отправки почты через gmail поэтому отвечаем на вопросы конфигуратора так:
Появится синее окно, в котором нужно будет ответить на некоторые вопросы:

1. Общий тип почтовой конфигурации: выбираем второй пункт «отправка почты через smarthost; прием по SMTP или через fetchmail»
2. Конфигурация почтового сервера: «почтовой имя системы», вписываем к примеру ваше доменное имя
3. Дальше нужно задать «ip адреса, которые будет прослушивать exim, если сервер не должен принимать почту извне, то следует указать ip 127.0.0.1» вот его мы и впишем
4. «Введите список доменов получателей, для которых эта машина должна считать себя местом назначения». Тут ничего писать не будем, localhost и имя хоста (ваше доменное имя указанное в п.2) добавится по умолчанию
5. «Введите список ip адресов, для которых ваш сервер будет выполнять роль smarthost». Тут тоже оставим поле пустым
6. «ip адрес или имя хоста являющегося исходящим smarthost». Пишем: smtp.gmail.com::587
7. «Скрывать локальное почтовое имя в исходящей почте?». Ответим: НЕТ
8. На вопрос по поводу режима работы DNS запросов: «сокращать кол-во DNS запросов до минимума (дозвон по требованию)». Ответим: НЕТ (у нас же Internet подключен напрямую а не через дозвон).
9. Выбор форматов доставки локальной почты mbox или Maildir, выберем то что предлагается по умолчанию: mbox
10. Нам предлагают сохранить конфигурацию в одном большом файле (более надежно) или в нескольких маленьких файлах. Выберем опять же по умолчанию и откажемся от разделения конф файла, ответим: НЕТ

Это часть настройки. В принципе можно делать настройку и через conf файл, примерно так:

/etc/exim4/update-exim4.conf.conf открываем файл и правим

dc_eximconfig_configtype=’smarthost’
dc_smarthost=’smtp.gmail.com::587’

III. Заходим в управление домена googleapps и создаем новый почтовый ящик для нашего сервера к примеру и добавляем в группу registrators
задаем временный пароль
заходим в созданный ящик, меняем пароль на постоянный.

IV.На сервере site.domain.ru открываем
/etc/exim4/passwd.client
и добавляем строки

gmail-smtp.l.google.com:site@domain.ru:пароль
*.google.com:site@domain.ru:пароль
smtp.gmail.com:site@domain.ru:пароль

где — имя почтового ящика для сервера
пароль — пароль от почтового ящика
сохраняем
рестартуем демон /etc/init.d/exim4

echo "test" | mail -s "Topic" ВАШАПОЧТА@MAIL.ru

= На этом настройка exim завершена, почта должна отправляться, но нет защиты от спама, поэтому письма могут попадать в спам или не доходить вообще=

ЗАЩИТА ОТ СПАМА

чтобы почта с вашего сервера не попадала в спам

PTR

Сначала настроим PTR. PTR это так называемая «обратная запись». В ней в обратном порядке записывается IP адрес хоста, с которого в нашем случае рассылается почта. По этой записи почтовики распознают имя хоста по его IP.

Предположим, что IP вашего почтового сервера 193.254.224.88. Открываем наш NS сервер (на данный момент 193.254.225.1) открываем etc/bind/ptr выбираем наш диапазон (db 193.254.224) и редактируем запись:
88 PTR 88.224.254.193.domain.ru.
меняем ее на
88 PTR site.domain.ru.
меняем serial на сегодняшнюю дату +порядковый номер (2014111201 ; serial) 20141112 — дата 01-номер
сохраняем
Проверяем изменения — http://centralops.net/co/DomainDossier.aspx
должны быть записи:
site.domain.ru IN A 193.254.224.88 3600s (01:00:00) (А запись редактируется в /etc/bind/domain/domain.ru)
88.224.254.193.in-addr.arpa IN PTR site.domain.ru 86400s (1.00:00:00)

SPF

В SPF записи мы указываем какие сервера имеют право отправлять почту с вашего домена. В самом простом случае эта запись выглядит следующим образом (добавляется здесь /etc/bind/domain/domain.ru):
IN TXT "v=spf1 a mx ~all"
у нас в основном работа с googl'овской почтой поэтому читаем тут https://support.google.com/a/answer/178723
и добавляем запись
IN TXT «v=spf1 +a +mx include:_spf.google.com ~all»

т.е почту разрешено отправлять всем кто есть в A записях, mx записях и всех кто разрешен на _spf.google.com. все остальные кто не в списке будут приходить без SPF (all)
далее меняем serial на сегодняшнюю дату порядковый номер (2014111201 ; serial) 20141112 — дата 01-номер
сохраняем
рестратуем bind

/etc/init.d/bind9 restart

обновляем зоны

rndc reload

проверяем http://mxtoolbox.com выбираем SPF record lookup. должно быть так:

Prefix Type Value PrefixDesc Description
a Pass Match if IP has a DNS 'A' record in given domain
+ mx Pass Match if IP is one of the MX hosts for given domain name
+ include _spf.google.com Pass The specified domain is searched for an 'allow'.
all SoftFail Always matches. It goes at the end of your record.

DKIM

 

Заходим в консоль администратора->google apps->gmail->аутентификация электронной почты
в выпадающем списке выбираем свой домен (domain.ru)
нажимаем создание новой записи
селектор (google._domainkey) оставляем по умолчанию

появится вывод
Название хоста DNS (название записи TXT):
google._domainkey
Значение записи TXT:
v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQXXXXXXXXXXXXXXXXXXXXXXXXXXXXXpslvJwuuOjglJBER15kej1PEBc85pMpz8qvm6Plq05q3Hh6Do/KKWRd1QIyhMvxMDfeNN0qG1ZrdjeuZklKghq5e+DiDL6jlQO02kDjw1jLNRivkTVv/iqqidWZj2OzZcgcZn6qjQ+uTMF4aJb9pl8/q2X4aP8eTUV5wIDAQAB

по этому принципу создаем запись dns как в разделе SPF

google._domainkey IN TXT «v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DXXXXXXXXXXXXXXXXXXXXXXXNHOLpslvJwuuOjglJBER15kej1PEBc85pMpz8qvm6Plq05q3Hh6Do/KKWRd1QIyhMvxMDfeNN0qG1ZrdjeuZklKghq5e+DiDL6jlQO02kDjw1jLNRivkTVv/iqqidWZj2OzZcgcZn6qjQ+uTMF4aJb9pl8/q2X4aP8eTUV5wIDAQAB»

далее меняем serial на сегодняшнюю дату +порядковый номер (2014111201 ; serial) 20141112 — дата 01-номер
сохраняем
рестратуем bind

/etc/init.d/bind9 restart

обновляем зоны

rndc reload

(можно и нужно делать параллельно с SPF и PTR чтоб не рестартить BIND несколько раз)
проверяем DKIM
http://www.dnswatch.info
выбираем TXT и вводи селектор и наш домен
google._domainkey.domain.ru
должен высветиться наш ключ
(нужно подождать пару часов до обновления DNS, но может и сразу появиться)

если все заработало,то отправляем письмо на gmail

echo "test" | mail -s "Topic" ВАШАПОЧТА@domain.ru

открываем письмо, справа от времени прихода письма есть стрелка меню -> выбираем открыть оригинал
если видим:
spf=pass (google.com: domain of designates 2a00:1450:4010:c03::245 as permitted sender) smtp.mail=;
dkim=pass header.i=@domain.ru

то все ок, письма подпиcываются, если none то не настроены подписи, если softfail в SPF, то значит письмо не прошло проверку. (нужно править spf)