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

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

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

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

нам нужно настроить 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 открываем файл и правим

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

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

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

= На этом настройка 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

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

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

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

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

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

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

открываем письмо, справа от времени прихода письма есть стрелка меню -> выбираем открыть оригинал
если видим:
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)