DBMail over PostgreSQL + Postfix + SASL on Debian. Part 5. SPF. DKIM. DMARC. Очистка заголовков. DNS PTR.

Part 1. Введение.
Part 2. DBMail.
Part 3. Postfix.
Part 4. SASL.
Part 5. SPF. DKIM. DMARC. Очистка заголовков. DNS PTR.

SPF

Фрэймворк политики отправителя — это метод авторизации почты созданный для определения поддельных адресов отправителя почты. SPF позволяет получателю проверить, что почта пришла с домена, авторизованного его администратором.

Добавьте следующую запись в DNS.

somewhere-in-the.space.               IN      TXT     "v=spf1 +mx -all"



Проверьте, что SPF работает.

DKIM

Почта идентифицированная доменным ключом также позволяет определить поддельный адрес отправителя. DKIM позволяет получателю проверить что почта пришедшая с определенного домена, авторизована владельцем домена. Это достигается добавлением в каждое письмо цифровой сигнатуры, ассоциируемой с доменом.

Установите opendkim.

apt-get install opendkim opendkim-tools

Создайте ключи DKIM.

mkdir /etc/postfix/dkim/
opendkim-genkey -D /etc/postfix/dkim/ -d somewhere-in-the.space -s mail
chmod 600 /etc/postfix/dkim/mail.private
chown -R opendkim /etc/postfix/dkim/

Отредактируйте файл /etc/opendkim.conf.

Syslog yes
UMask 007
Mode sv
Socket inet:8891@localhost
PidFile /var/run/opendkim/opendkim.pid
OversignHeaders From
TrustAnchorFile /usr/share/dns/root.key
UserID opendkim
Canonicalization relaxed/relaxed
X-Header yes
KeyTable file:/etc/postfix/dkim/keytable
SigningTable file:/etc/postfix/dkim/signingtable

Отредактируйте файл /etc/postfix/dkim/keytable.

mail._domainkey.somewhere-in-the.space somewhere-in-the.space:mail:/etc/postfix/dkim/mail.private

Отредактируйте файл /etc/postfix/dkim/signingtable.

somewhere-in-the.space mail._domainkey.somewhere-in-the.space

Отредактируйте файл /etc/default/opendkim.

RUNDIR=/var/run/opendkim
SOCKET="inet:8891@localhost"
USER=opendkim
GROUP=opendkim
PIDFILE=$RUNDIR/$NAME.pid
EXTRAAFTER=

Сконфигурируйте postfix на использование opendkim. Добавьте следующие строки в файл /etc/postfix/main.cf.

milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891

Добавьте следующие записи в DNS. Значение p вы найдете в файле /etc/postfix/dkim/mail.txt. Вам, возможно, потребуется сделать конкатенацию двух кусков ключа, если ключ достаточно большой.

cat /etc/postfix/dkim/mail.txt
mail._domainkey IN      TXT     ( "v=DKIM1; h=sha256; k=rsa; "
          "p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0myKECDtkhaMw158x3fNOwR3jF2DXAqg+ABiQ4bDOFewSY4zKXzKbBwvzcOYZLPzj6iwIK+aJJ3/siTJ3QQS7mbrzLw6smPIN/tDEm0xe0aNn4mzTrGROUUGgL0FXVLkJRNkiQXGA0aTAYk2prpFJihr/Sp+ZqFkxrpkOo23ylk0N0/bxHN3Rj9/epXYpWyPcLyMzggK1vC9K8"
          "UhSZ8TfL/7E8n0zlEgxJ3AmoqaKCSPQKWB6F3dnt5RDp5Ev+8Wwq+M6Dn1/wpG5mp2qQMT8FsxIvPhdNKQFN3cfa1QFUHeSSZfgHr9ZTXxWYnOe8AlyFg1evNOCpNLCPIZk2A7mwIDAQAB" )  ; ----- DKIM key mail for somewhere-in-the.space
mail._domainkey.somewhere-in-the.space. IN      TXT     "v=DKIM1; h=sha256; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0myKECDtkhaMw158x3fNOwR3jF2DXAqg+ABiQ4bDOFewSY4zKXzKbBwvzcOYZLPzj6iwIK+aJJ3/siTJ3QQS7mbrzLw6smPIN/tDEm0xe0aNn4mzTrGROUUGgL0FXVLkJRNkiQXGA0aTAYk2prpFJihr/Sp+ZqFkxrpkOo23ylk0N0/bxHN3Rj9/epXYpWyPcLyMzggK1vC9K8UhSZ8TfL/7E8n0zlEgxJ3AmoqaKCSPQKWB6F3dnt5RDp5Ev+8Wwq+M6Dn1/wpG5mp2qQMT8FsxIvPhdNKQFN3cfa1QFUHeSSZfgHr9ZTXxWYnOe8AlyFg1evNOCpNLCPIZk2A7mwIDAQAB"
_adsp._domainkey.somewhere-in-the.space. IN      TXT     "dkim=all"


Вторая запись DNS просит получателя проверять сигнатуру письма для всех писем. ADSP уже устарел и мы используем его только для обратной совместимости.

Перезапустите сервисы.

systemctl restart opendkim
systemctl restart postfix

Протестируйте ключ DKIM.

opendkim-testkey -d somewhere-in-the.space -s mail -vvv
opendkim-testkey: using default configfile /etc/opendkim.conf
opendkim-testkey: checking key 'mail._domainkey.somewhere-in-the.space'
opendkim-testkey: key not secure
opendkim-testkey: key OK

Проверьте что DKIM работает нормально отправив письмо на check-auth@verifier.port25.com.

echo "test" | mail -aFrom:admin@somewhere-in-the.space check-auth@verifier.port25.com

В ответ вы получите письмо с результатами проверки. Следующая строка означает, что проверка DKIM прошла.

###
DKIM check:         pass
###

DMARC

Идентификация сообщений, создание отчётов и определение соответствия по доменному имени. Эта технология создана, чтобы защитить владельцев домена от подделывания почты. После публикации DMARC записи в DNS, каждый получатель может авторизовать полученную почту используя правила внутри записи.

Давайте укажем получателям отправлять все подделанные письма в спам, а так же слать отчет о таких письмах на postmaster@somewhere-in-the.space.
Создайте следующую запись в DNS.

_dmarc.somewhere-in-the.space.        IN      TXT     "v=DMARC1; p=quarantine; rua=mailto:postmaster@somewhere-in-the.space"



Проверьте, что DMARC сконфигурирован правильно.

Очистка заголовков

По умолчанию postfix не удаляет из ваших писем ненужные заголовки. Это означает, что получатель письма получит информацию о ваших ip, имени машины и клиентском ПО. Кроме того, иногда это может ухудшить ваш спам-рейтинг.

Установите модуль pcre postfix.

apt install postfix-pcre

Добавьте следующую строку в файл /etc/postfix/main.cf.

header_checks=pcre:/etc/postfix/header_checks.pcre

Создайте файл /etc/postfix/header_checks.pcre.

/^Received: .*/     IGNORE
/^X-Originating-IP:/    IGNORE
/^User-Agent:/       IGNORE
/^X-Mailer:/         IGNORE
/^X-PHP-Originating-Script/ IGNORE

Перезапустите postfix.

systemctl restart postfix

DNS PTR

Чтобы ваш спам-рейтинг был достаточно хорош, вам также придется обратиться к вашему хостинг провайдеру и попросить его создать записи обратного просмотра в DNS. Эти записи не должны быть определены в вашем DNS.
Проверьте записи используя следующие команды.

dig -x your-IPv4
dig -x your-IPv6

Спам-рейтинг

В заключении, проверьте ваш спам-рейтинг.

echo "Hello, my friend. How are you?" | mail -s "Hello" -aFrom:admin@somewhere-in-the.space test-rbjqd@mail-tester.com

1 комментарий

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *