Для корректной работы почтового сервера надо правильно настроить DNS.
В описании нашей доменной зоны надо, как минимум, сделать MX-записи. Также желательно прописать обратную зону, SPF, DKIM и DMARC
Основные настройки DNS
Для того, чтобы другие сервера знали, что именно наш сервер принимает почту для нашего домена, в описании зоны надо сделать следующие настройки:
Сделать A- запись для нашего сервера (прямая зона) Сделать MX- запись с указанием приоритета и нашим доменным именем Отправить заявку провайдеру, хостеру, или иной организации предоставившей нам IP- адрес, с просьбой прописать обратную зону ( PTR- запись ) для нашей IP- адреса с нашим именем с прямой зоны
Настройка SPF
SPF запись - это запись в DNS, в как ом указывается, какие именно сервера имеют право отправлять почту от имени данного домена.
SPF - это TXT запись, второй находится в настройках DNS зоны. Например:
" V = spf1 + a + mx + a:mail.cnmcyber.com ~ all"
Расшифровка записи:
- разрешено
- запрещено ~ М ожно, но не желательно v = spf1 используем запись версии 1
- A можно отправлять почту с А запись в (то есть с основно й адреса домена)
- Mx можно отправлять почту с сервера и в, для которых прописаны MX (то есть почтовые сервер и данного домена)
- A : mail.cnmcyber.com можно отправлять почту с хоста mail.cnmcyber.com (можно указывать хост не из этого домена) ~ A ll от других почту принимать можно, но доверие и система выставит меньше.
Настройка DKIM
DKIM - ц е цифровой подписи, который почтовый сервер вставляет в каждый лист на основании закрытого ключа openpgp. В крыть ключ хранится в DNS и сервер получателя проверяет валидность отправителя на основании открытого ключа и цифровой подписи .
Настройка DKIM на сервере Postfix
Установим необходимые программы:
apt install opendkim opendkim-tools
Далее создаем папку /etc/mail и переходим в нее. Там мы сгенерируем ключи командой
opendkim-genkey -t -s mail -d cnmcyber.com
где
mail - это так называемый селектор ключа (имя) берется произвольно
cnmcyber.com - домен для которого создаем пару ключей
В результате команды в папке /etc/mail появятся два файла mail.txt и mail.private - это и есть ключи.
Далее редактируем файл /etc/default/opendkim
Вписываем в него строку:
SOCKET = "inet:8891@localhost"
здесь мы указываем, где будет слушать соединения Open DKIM . ФАйл /etc/opendkim.conf приводим к виду :
Syslog yes
UMask 002
Domain cnmcyber.com # имя домена который будет верифицироваться
KeyFile /etc/mail/mail.private
Selector mail # селектор заданный при генерации ключа
AutoRestart yes
Background yes
Canonicalization relaxed/relaxed
DNSTimeout 5
Mode sv
SignatureAlgorithm rsa-sha256
SubDomains no
X-Header no
OversignHeaders From
Statistics /var/log/dkim-filter/dkim-stats # файл лога dkim
Добавляем строки в конец файла /etc/postfix/main.cf:
# DKIM
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet: localhost: 8891
# строка должна совпадать со строкой /etc/default/opendkim
non_smtpd_milters = inet: localhost: 8891
# строка должна совпадать со строкой / etc/default/opendkim
Запускала такую команду:не работал opendkim
systemctl edit opendkim
[Service]
ExecStart=
ExecStart=/usr/sbin/opendkim -P /var/run/opendkim/opendkim.pid -p inet:8891@localhost
#local:/var/spool/postfix/opendkim/opendkim.sock
Настройка DKIM в DNS
В DNS для нашего домена добавляем новую запись типа TXT и именем - mail._domainkey. Значение этой записи - это содержимое файла /etc/mail/mail.txt , то есть открытый ключ для нашего домена.
Для файла описания зоны bind9, например, эта строка будет выглядеть так:
mail._domainkey IN TXT v=DKIM1;t=s;p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC1TWbfA9JJs9Z6FwJ/PvcjLY7aOZGgV36SBOKBebra/pZKiUpj2NLiOLJ0qI8Pm05l/5lnHvsWsWc7fW6g0rF9T6SqYJU3tm96D+SnSyuenr06nQ4KLCIIRt15t0OfGXlZHB1NkaIxlw9ZbFxBeiQYUnihV1PhZj72VwO888W0swIDAQAB
Теперь надо перезапустить Postfix и через некоторое время, когда обновятся DNS-записи, письма от нашего сервера можно будет проверять через DKIM.
Настройка DMARC После создания записей SPF и DKIM необходимо настроить проверку DMARC, добавив в записи DNS домена правила в виде TXT- записи. DMARC задает политику, как проверять почту в домене и что делать, если письмо не проходит и во проверку SPF или DKIM.
Базовый запись DMARC выглядит так:
_dmarc.cnmcyber.com IN TXT "v = DMARC1; p =;"
p - policy - политика, могут быть:
none - не принимать никаких особых действий, все на усмотрение почтового сервера;
quarantine - отправить в спам;
reject - не принимать письмо.
Но такая настройка подходит только в случае единичного сервера. Более правильная политика, которая учитывает наличие поддоменов из которых может стелиться почта и позволяет получать отчеты, выглядит так:
_dmarc.cnmcyber.com IN TXT "v=DMARC1; p=none; sp=none; rua=mailto:postmaster@cnmcyber.com"
sp - subdomain policy - может принимать значения те же что и policy;
rua - reporting URI for aggregate reports - задает почтовый адрес в формате mailto: mbox@cnmcyber.com на который раз в сутки будут приходить отчеты в XML.