У меня есть ряд проблем с Postfix и отправкой почты, которая отклоняется или помещается в папку спама / нежелательной почты.
Я пытаюсь отправлять электронные письма от имени ряда своих клиентов. У меня настроен и запущен сервер postfix, настроен DKIM (open-dlim) и, похоже, работает правильно (по крайней мере, по большей части. Проверено верификатором port25, отправлено несколько тестовых писем в тестовые учетные записи и проверены заголовки аутентификации) , SPF и rDNS настроены правильно и так далее. Кто этот сервер отправляет от имени, может часто меняться, поэтому у меня есть сценарии bash, которые динамически генерируют, проверяют и настраивают DKIM для нового домена с помощью open-dkim. Кажется, это работает очень хорошо. Я также изменяю обратный путь и адреса отправителя, чтобы они были адресом verp, который идет в почтовый ящик, который я настроил для обработки отказов, жалоб и отклонений. Это тоже работает плавно.
DKIM передает верификатор port25, верификатор elandsys, Gmail и некоторые другие. Но с AOL это не удается. Я продолжаю получать сбой хэша тела, но везде говорят, что хеш тела проходит. Я создал новую учетную запись AOL для двойной проверки и теперь получаю от AOL отказ «521 5.2.1: AOL не принимает доставку этого сообщения».
Электронные письма на учетные записи Outlook / MSN / Hotmail попадают в папку нежелательной почты.
Я также хотел бы подписывать исходящие электронные письма с доменов, у которых не подтвержден DKIM, с помощью DKIM моего почтового домена. Я видел, как это делают такие провайдеры, как Mandrill (см. Ниже). После настройки постфикса результат не был положительным. Доставляемость писем на самом деле резко упала.
Delivered-To: replaced@replaced.com
Received: by 10.55.161.141 with SMTP id k135csp1830148qke;
Tue, 26 Apr 2016 20:47:00 -0700 (PDT)
X-Received: by 10.37.106.85 with SMTP id f82mr3485368ybc.108.1461728820068;
Tue, 26 Apr 2016 20:47:00 -0700 (PDT)
Return-Path: <bounce-md_30132259.57203633.v1-c38c577effa341359e850867904fed55@mandrillapp.com>
Received: from mail132-12.atl131.mandrillapp.com (mail132-12.atl131.mandrillapp.com. [198.2.132.12])
by mx.google.com with ESMTPS id w16si600671ybg.207.2016.04.26.20.46.59
for <replaced@replaced.com>
(version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
Tue, 26 Apr 2016 20:47:00 -0700 (PDT)
Received-SPF: pass (google.com: domain of bounce-md_30132259.57203633.v1-c38c577effa341359e850867904fed55@mandrillapp.com designates 198.2.132.12 as permitted sender) client-ip=198.2.132.12;
Authentication-Results: mx.google.com;
dkim=pass header.i=@mail132-12.atl131.mandrillapp.com;
dkim=pass header.i=@mandrillapp.com;
spf=pass (google.com: domain of bounce-md_30132259.57203633.v1-c38c577effa341359e850867904fed55@mandrillapp.com designates 198.2.132.12 as permitted sender) smtp.mailfrom=bounce-md_30132259.57203633.v1-c38c577effa341359e850867904fed55@mandrillapp.com
DKIM-Signature: v=1; a=rsa-sha1; c=relaxed/relaxed; s=mandrill; d=mail132-12.atl131.mandrillapp.com;
h=From:Sender:Subject:Reply-To:To:Message-Id:Date:MIME-Version:Content-Type; i=brandon.pugh@mail132-12.atl131.mandrillapp.com;
bh=8PvyG5n9j+Ss5LkEFRDfDyq0HKE=;
b=R0+W6T3QnIZ6BiLyJ7dkxJAKeX3lPwuIb5J+t+HXfUgyuIZGXVDpcaPUxUsnZr7Vj8W/hen2AxXT
Ul9Fyr7kT1BJFebk+Q/lZKQOoD+TRjx6acbqxZtih581bpQUXlLfGvsu6IBAu87T6Bo2TYKimeu6
ZVwDkQneY8kcB5/40HY=
Received: from pmta02.mandrill.prod.atl01.rsglab.com (127.0.0.1) by mail132-12.atl131.mandrillapp.com id h40r381sar81 for <jacob.ralph@diamondprofilellc.com>; Wed, 27 Apr 2016 03:46:59 +0000 (envelope-from <bounce-md_30132259.57203633.v1-c38c577effa341359e850867904fed55@mandrillapp.com>)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mandrillapp.com;
i=@mandrillapp.com; q=dns/txt; s=mandrill; t=1461728819; h=From :
Sender : Subject : Reply-To : To : Message-Id : Date : MIME-Version :
Content-Type : From : Subject : Date : X-Mandrill-User :
List-Unsubscribe; bh=ZrtQq9DGePbIoMTLPLNJf1+1+NGpBrWl294/n54mrko=;
b=mKtUK27sdir1yIoMUKzddEFOZN6CD6CSpl3V42N+n4st78OHYeaE1BDraVhuIvctg5r6uk
5dh6vcGh40AcvyZKSkWBecqESP0kKQKKhbR7Oidlef9dP7PYZ11CLQ1DxbsAUP0IOUtUu7dW
SrGTmkbnIAv+9hPgB/JdUgHt+SISk=
From: Replaced Sender <sender_replaced@replaced.com>
Sender: Replaced Sender <replaced.sender@mail132-12.atl131.mandrillapp.com>
Subject: test 3
Return-Path: <bounce-md_30132259.57203633.v1-c38c577effa341359e850867904fed55@mandrillapp.com>
Received: from [52.2.104.2] by mandrillapp.com id c38c577effa341359e850867904fed55; Wed, 27 Apr 2016 03:46:59 +0000
Reply-To: <sender_replaced@replaced.com>
To: "replaced@replaced.com" <replaced@replaced.com>
X-Report-Abuse: Please forward a copy of this message, including all headers, to abuse@mandrill.com
X-Report-Abuse: You can also report abuse here: http://mandrillapp.com/contact/abuse?id=30132259.c38c577effa341359e850867904fed55
X-Mandrill-User: md_30132259
Message-Id: <30132259.20160427034659.572036335eb949.06765010@mail132-12.atl131.mandrillapp.com>
Date: Wed, 27 Apr 2016 03:46:59 +0000
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="_av-P_hw6r65tO2JheT0wzzGaA"
Имейте в виду, что я изменил адреса отправителя и получателя по очевидным причинам конфиденциальности. Обратите внимание, что в электронном письме есть две подписи DKIM, одна для почтового сервера, а другая для Mandrill.com. Это то, что мне нужно? Кроме того, адреса «От» и «Ответить» не совпадают с заголовками «Отправитель» и «Обратный путь». Нужно ли мне подписывать свои электронные письма с помощью DKIM моего почтового сервера еще и потому, что мои заголовки отправителя и обратного пути являются адресом моего почтового сервера?
Конфигурация Postfix:
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
mail_owner = postfix
inet_interfaces = all
inet_protocols = ipv4
unknown_local_recipient_reject_code = 550
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
debug_peer_level = 2
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
ddd $daemon_directory/$process_name $process_id & sleep 5
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
html_directory = no
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.6.6/samples
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
smtpd_tls_cert_file=/etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file=/etc/pki/dovecot/private/dovecot.pem
smtpd_use_tls=yes
smtpd_tls_auth_only = no
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks, reject_unauth_destination
myhostname = mail.mailserver.com
mydomain = mailserver.com
myorigin = mailserver.com
virtual_transport = lmtp:unix:private/dovecot-lmtp
virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf, regexp:/etc/postfix/regexp-alias.cf
smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 20
smtpd_hard_error_limit = 40
milter_default_action = accept
milter_protocol = 2
smtpd_milters = inet:localhost:8891
non_smtpd_milters = inet:localhost:8891
smtp_destination_concurrency_limit = 2
delay_warning_time = 0h
maximal_queue_lifetime = 1d
bounce_queue_lifetime = 1d
notify_classes = bounce, 2bounce, delay, policy, protocol, resource, software
bounce_notice_recipient = fbl@mailserver.com
2bounce_notice_recipient = fbl@mailserver.com
error_notice_recipient = fbl@mailserver.com
delay_notice_recipient = fbl@mailserver.com
verp_delimiter_filter = +=
smtp_tls_security_level = may
smtp_tls_CAfile=/etc/postfix/ssl/cacert.pem
default_verp_delimiters = +=
Еще раз помните, что домен почтового сервера был заменен на «замененный».
Пример прохождения DKIM и SPF:
==========================================================
Summary of Results
==========================================================
SPF check: pass
DomainKeys check: neutral
DKIM check: pass
Sender-ID check: pass
SpamAssassin check: ham
==========================================================
Details:
==========================================================
HELO hostname: mail.mailserver.com
Source IP: MAIL-SERVER-IP
mail-from: fbl-verb@mailserver.com
----------------------------------------------------------
SPF check details:
----------------------------------------------------------
Result: pass
ID(s) verified: smtp.mailfrom=fbl-verp@mailserver.com
DNS record(s):
mailserver.com. SPF (no records)
mailserver.com. 300 IN TXT "v=spf1 mx ptr a:mail.mailserver.com a:smtp.mailserver.com ?all"
mailserver.com. 159 IN MX 0 mail.mailserver.com.
mailserver.com. 159 IN MX 10 smtp.mailserver.com.
mail.cbcrmes.com. 165 IN A MAIL-SERVER-IP
----------------------------------------------------------
DomainKeys check details:
----------------------------------------------------------
Result: neutral (message not signed)
ID(s) verified: header.From=sender_replaced@replaced.com
DNS record(s):
----------------------------------------------------------
DKIM check details:
----------------------------------------------------------
Result: pass (matches From: sender_replaced@replaced.com)
ID(s) verified: header.d=replaced.com
Canonicalized Headers:
date:Wed,'20'27'20'Apr'20'2016'20'12:41:21'20'+0000'0D''0A'
from:"sender_replaced"'20'<sender_replaced@replaced.com>'0D''0A'
reply-to:"sender_replaced"'20'<sender_replaced@replaced.com>'0D''0A'
to:check-auth@verifier.port25.com.'0D''0A'
list-unsubscribe::'20'<mailto:fbl-verp@mailserver.com?subject=unsubscribe>,'20'<unsublink.com>'0D''0A'
subject:=?utf-8?Q?test?='0D''0A'
dkim-signature:v=1;'20'a=rsa-sha256;'20'c=relaxed/simple;'20'd=replaced.com;'20's=mail;'20't=1461760882;'20'bh=JA4czgWk/3S9Et+7C2mkMVF38CnW0WyK2YaWom9s0J8=;'20'h=Date:From:Reply-To:To:List-Unsubscribe:Subject:From;'20'b=
Canonicalized Body:
CONTENT REPLACED
DNS record(s):
mail._domainkey.replaced.com. 300 IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDHQ+O0Lu2IOTQvFfguL0U5rMJo1RsVy3ZEP5Dkup/meMRfDYbnaUQL7pIRvBZo7WczgtcYVHI7A0rqwGJXZ8dyo5CC5A+2Kg6WtOTkmMwTPaRtASIX+qsJXe6ZksiOrfllFHbs+zOA1uT6m42VH+5cw4l9MzL75WAeUEy+cElx3QIDAQAB"
Public key used for verification: mail._domainkey.replaced.com (1024 bits)
NOTE: DKIM checking has been performed based on the latest DKIM specs
(RFC 4871 or draft-ietf-dkim-base-10) and verification may fail for
older versions. If you are using Port25's PowerMTA, you need to use
version 3.2r11 or later to get a compatible version of DKIM.
----------------------------------------------------------
Sender-ID check details:
----------------------------------------------------------
Result: pass
ID(s) verified: header.Sender=fbl-verp@mailserver.com
DNS record(s):
mailserver.com. SPF (no records)
mailserver.com. 300 IN TXT "v=spf1 mx ptr a:mail.mailserver.com a:smtp.mailserver.com ?all"
mailserver.com. 159 IN MX 0 mail.mailserver.com.
mailserver.com. 159 IN MX 10 smtp.mailserver.com.
mail.mailserver.com. 165 IN A MAIL-SERVER-IP
----------------------------------------------------------
SpamAssassin check details:
----------------------------------------------------------
SpamAssassin v3.4.0 (2014-02-07)
Result: ham (0.7 points, 5.0 required)
pts rule name description
---- ---------------------- --------------------------------------------------
0.0 URIBL_BLOCKED ADMINISTRATOR NOTICE: The query to URIBL was blocked.
See
http://wiki.apache.org/spamassassin/DnsBlocklists#dnsbl-block
for more information.
0.0 HEADER_FROM_DIFFERENT_DOMAINS From and EnvelopeFrom 2nd level mail
domains are different
-0.0 SPF_PASS SPF: sender matches SPF record
-1.0 RP_MATCHES_RCVD Envelope sender domain matches handover relay domain
-1.9 BAYES_00 BODY: Bayes spam probability is 0 to 1%
[score: 0.0000]
0.0 HTML_MESSAGE BODY: HTML included in message
1.7 HTML_IMAGE_ONLY_08 BODY: HTML: images with 400-800 bytes of words
-0.1 DKIM_VALID_AU Message has a valid DKIM or DK signature from author's
domain
0.1 DKIM_SIGNED Message has a DKIM or DK signature, not necessarily valid
-0.1 DKIM_VALID Message has at least one valid DKIM or DK signature
2.0 LIST_PARTIAL_SHORT_MSG Incomplete mailing list headers + short
message
Пример неудачного DKIM на AOL.com:
Return-Path: <fbl-verp@mailserver.com>
Received: from mail.mailserver.com (mail.mailserver.com [MAIL-SERVER-IP])
(using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
(No client certificate requested)
by mtaig-aaj03.mx.aol.com (Internet Inbound) with ESMTPS id 8994670000095
for <receiver@aol.com>; Wed, 27 Apr 2016 10:40:37 -0400 (EDT)
Received: from anothersubdomain.mailer.com (unknown [ANOTHER-IP])
by mail.mailserver.com (Postfix) with ESMTPA id E209040DC5
for <receiver@aol.com>; Wed, 27 Apr 2016 14:40:35 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple;
d=replaced.com; s=mail; t=1461768035;
bh=xeyQpzG8DUkOjVoBaQKDREDNNMY65POvqFqSduSIYlk=;
h=Date:From:Reply-To:To:List-Unsubscribe:Subject:From;
b=LlYKos9npzLMlbflARsTIe8ryzAU9cMdaseHMAWJQgXgzLg9TT1VB5P5HC7+VBjqt
dgcEoJ3f48XQU11FXjYGt3DG2Z4n7htbJoz113JTOLIynAHEnvT5N3Zk8IaJQhOA17
/EXrYL3X4zBMiE/1xbSmSA/OlgcFBHEavvRnBJ6w=
User-Agent: AGENT-REPLACED
Date: Wed, 27 Apr 2016 14:40:35 +0000
From: "Replaced" <replaced@replaced.com>
Sender: <fbl-verp@mailserver.com>
Reply-To: "Replaced" <replaced@replaced.com>
To: receiver@aol.com
X-FBL: client-5595338668
X-Data: client-5595338668
X-Report-Abuse: Please report abuse here: abuse@mailserver.com
List-Unsubscribe:: <mailto:fbl-verp@mailserver.com?subject=unsubscribe>, <UNSUB-LINK>
Subject: =?utf-8?Q?test?=
X-Sender: replaced@replaced.com
X-Mailer: MAILER-REPLACED
X-Priority: 3 (Normal)
Message-ID: <5720cf63d98bb@mailserver.com>
Mime-Version: 1.0
Content-Type: multipart/alternative; boundary="B_ALT_5720cf63d996e"
x-aol-global-disposition: S
X-AOL-SCOLL-AUTHENTICATION: mtaig-aaj03.mx.aol.com ; domain : replaced.com DKIM : fail
Authentication-Results: mx.aol.com;
spf=pass (aol.com: the domain mailserver.com reports MAIL-SERVER-IP as a permitted sender.) smtp.mailfrom=mailserver.com;
dkim=fail (aol.com: Message body hash computation failed verification.) header.d=replaced.com;
X-AOL-REROUTE: YES
x-aol-sid: 3039ac1b03c35720cf6433ad
X-AOL-IP: 52.87.69.25
X-AOL-SPF: domain : mailserver.com SPF : pass
Еще раз помните, что идентификационная информация была изменена.
Я также отправил электронное письмо на адрес test@allaboutspam.com, чтобы получить дополнительный отчет от другой стороны. Все тесты пройдены (rDNS, DKIM, SPF, проверка черного списка, проверка приветствия, проверка спама и проверка серого списка), за исключением проверки проверки тега адреса возврата, которая не должна приводить к отклонению или рассылке моей электронной почты.
Я искал решения этих проблем повсюду. Пока ни один из них не работал. Какие-либо предложения?
Электронная почта для AOL и EMAIL для порта 25 - процесс подписания DKIM отличается.
Отправляя в AOL, вы подписываете его с c=relaxed/simple
когда вы отправляете его на порт 25, это c=relaxed/relaxed
. На самом деле вы не сравниваете яблоки с яблоками.
При этом у многих валидаторов DKIM возникают проблемы с Simple
конанкализация, придерживаться relaxed
. Если вы протестируете, отправив электронное письмо на mailtest@unlocktheinbox.com
они тестируют 4 различных валидатора DKIM - 2 из них не пользуются платным доступом. Когда вы видите расхождения между различными валидаторами, это обычно ошибка. Но в вашем случае я не так уверен, потому что тест, который вы сделали, действительно не является точным, вы должны отправить одно и то же электронное письмо на порт 25, aol, mailtest со всеми валидаторами в строке «Кому». Это даст вам возможность сравнить яблоки с яблоками.
У меня недавно была такая же проблема, хотя и не при AOL. Gmail отказывался от моего DKIM, и когда я копнул глубже, он отказывался везде (например, mail-tester.com, dkimvalidator.com), заявляя, что тело изменилось. Как ни странно, математика DKIM была правильной согласно dkimcore.org/c/keycheck (если вы попробуете dkimcore.org, «селектор» будет просто «dkim» без кавычек, предполагая, что значение хоста вашей записи DNS DKIM - dkim._domainkey ). Я считаю, что причиной была разница в хеш-значениях, вызванная \ n и \ r \ n в разных системах, но я не могу это подтвердить.
Чтобы все заработало, я изменил запись DNS TXT _dmarc, добавив adkim = r; что похоже на ответ @Henry.
Итак, ваша запись _dmarc может быть:
TXT _dmarc v=DMARC1; p=none; adkim=r; rua=mailto:postmaster@mailserver.com
FYI v = DMARC1 означает, что версия протокола - DMARC1. p = none означает, что мы выбираем none в качестве политики для нашего домена. rua означает URI для сводного отчета. Адрес электронной почты используется, чтобы сообщить миру, куда следует отправить отчет. Замените postmaster@mailserver.com своим реальным адресом электронной почты, который используется для получения сводных отчетов DMARC.