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
Очень полезная информация!
Огромное спасибо за статью