Я настраиваю экземпляр AWS EC2 с Postfix и настроил его с помощью Route53, включая обратный DNS. Я проверил, что могу отправлять электронные письма, и Outlook их принимает нормально, а Gmail - нет. Я последовал за это руководство для установки и настройки opendkim, и когда я использую этот валидатор, Я получил это сообщение о том, что это действительная запись DKIM. Однако когда я использую этот валидатор, Я получаю ответ «Это сообщение не содержит DKIM-подпись». Кроме того, когда я отправляю электронное письмо в Outlook, оно попадает в основной почтовый ящик, но при аутентификации я получаю следующие результаты:
Authentication-Results: spf=pass (sender IP is x.x.x.x)
smtp.mailfrom=mail.example.com; mail.outlookserver.com; dkim=none (message not
signed) header.d=none;mail.outlookserver.com; dmarc=pass action=none
header.from=mail.example.com;compauth=pass reason=100
IP-адрес x.x.x.x
является заменой IP-адреса моего почтового сервера, и mail.example.com
это полное доменное имя моего почтового сервера. mail.outlookserver.com
это почтовый сервер Outlook. Очевидно, что записи SPF и DMARC проходят, а запись DKIM - нет. У меня есть запись DKIM, установленная в AWS Route 53, как показано Вот и Вот, и я могу покопаться и вернуть ожидаемое значение, где $key
мой открытый ключ:
andreaskralj@linuxdev:~$ dig +short TXT mail._domainkey.example.com
"v=DKIM1; h=sha256; k=rsa; " "p=$key"
Я не уверен, почему моя запись DKIM не воспринимается Outlook или другим валидатором как действительная. Если у кого-то есть идеи, что я могу попробовать, или нужна дополнительная информация, дайте мне знать.
Редактировать:
Я попытался добавить следующие строки в /etc/postfix/master.cf
:
pickup unix n - y 60 1 pickup
-o smtpd_milters=inet:localhost:8892
-o non_smtpd_milters=inet:localhost:8892
Очередь пикапа уже была там; Я добавил строки -o в соответствии с предложенным ответом @Lasse Michael Mølgaard. К сожалению, в заголовках моих писем все еще написано, что DKIM не установлен.
Предложение основано на моем комментарии:
Я использую amavis для подписи своих писем, поэтому я добавил строку под строкой получения по умолчанию с -o content_filter=...
, так что теперь говорится.
pickup unix n - y 60 1 pickup
-o content_filter=amavis:[127.0.0.1]:10026
Мне интересно, можно ли использовать smtpd_milters
и non-smtpd_milters
так же?
РЕДАКТИРОВАТЬ
Если вы хотите использовать Amavis DKIM для подписи почты, вам нужно немного подправить ваш главный файл.
Значение по умолчанию - когда вы пересылаете что-то в Amavis (в моем случае порт 10026), тогда Amavis вернет результат, используя порт на один выше (в моем случае 10027).
Поэтому у меня есть следующая запись в моем master.cf
файл:
amavis unix - - y - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o smtp_bind_address=
127.0.0.1:10027 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
-o receive_override_options=no_unknown_recipient_checks,no_header_body_checks
-o smtp_send_xforward_command=yes
-o milter_default_action=accept
-o milter_macro_daemon_name=ORIGINATING
-o disable_dns_lookups=yes
Способ, которым Amavis знает, как отправить подписанный результат обратно в Postfix, описан в этой части /etc/amavis/conf.d/50-user
:
# :* = send to incoming Port + 1
$forward_method = 'smtp:127.0.0.1:*';
$notify_method = 'smtp:127.0.0.1:*';
$interface_policy{'10026'} = 'ORIGINATING';
$policy_bank{'ORIGINATING'} = {
originating => 1,
};