Назад | Перейти на главную страницу

Postfix: управление субдоменами DMARC, DKIM и SPF, когда сообщения о недоставке приходят от нулевого отправителя «<>»

У меня есть несколько серверов postfix, которые отправляют почту от имени моего домена (example.com). Если указан адрес отправителя, DKIM и SPF проходят правильно. Однако в своих уведомлениях DMARC я заметил, что с моих серверов postfix отправляются сообщения с ошибками.

Каждый постфиксный сервер сопоставляется с субдоменом в нашем DNS (smtp1.example.com, smtp2.example.com). Обратный поиск настраивается на AWS для отправляющего IP.

Когда письмо возвращается, postfix отправляет отправителю письмо с уведомлением о недоставке, но оно приходит от нулевого отправителя. Кажется, что эти сообщения не поддерживают DKIM И иногда SPF, потому что они отправляются с MAILER-DAEMON@smtp1.example.com, а не MAILER-DAEMON@example.com.

Как лучше всего справиться с этим? Должен ли я создавать записи DKIM И SPF для каждого поддомена? Есть ли способ настроить отправителя почтового демона в postfix, чтобы он отправлялся из домена, а не из поддомена?


ОБНОВИТЬ:

Я понял, что в "/etc/postfix/main.cf" мне нужно изменить переменную $ mydomain на example.com и настроить $ myorigin на использование $ mydomain, но DKIM не прикрепляется. Я использую OpenDKIM для применения DKIM к каждой исходящей почте, но поскольку postfix использует from = <> вместо mailer-daemon@example.com, кажется, что он пропускает его, хотя я не уверен, что это причина.


ОБНОВИТЬ:

Мне удалось заставить DKIM отправляться для возвращенных писем, добавив «internal_mail_filter_classes = bounce» в «/etc/postfix/main.cf» согласно:

http://www.postfix.org/MILTER_README.html

Я все еще сомневаюсь, лучший ли это способ достичь моей цели.


ОБНОВИТЬ:

Отказанные электронные письма отправляются с MAILER-DAEMON@example.com, но получатель видит письмо как отправленное с smtp1.example.com и подписанное example.com. Это требует, чтобы у меня была настроена еще одна запись spf для smtp1.example.com, и я бы предпочел не нуждаться в ней. Отказы должны отображаться как отправленные корневым доменом.

Как мне этого добиться?


ОБНОВИТЬ:

Добавление заголовков писем и вывод postconf -n. Я запутал только IP-адреса и доменное имя. Электронное письмо было получено управляемым доменом Gmail.

Заголовки электронной почты

Delivered-To: customerservice@example.com
Received: by 2002:a2e:45d5:0:0:0:0:0 with SMTP id s204-v6csp753516lja;
        Wed, 26 Sep 2018 10:59:51 -0700 (PDT)
X-Google-Smtp-Source: ACcGV62LaRKlAeJoVcCqIQRgHXwen7bLAev7n/gyBtIF7yWMLpmgBaL1q8D3Qm0zEMcDjPEmCjCz
X-Received: by 2002:a0c:a9d2:: with SMTP id c18-v6mr54933qvb.191.1537984791474;
        Wed, 26 Sep 2018 10:59:51 -0700 (PDT)
ARC-Seal: i=1; a=rsa-sha256; t=1537984791; cv=none;
        d=google.com; s=arc-20160816;
        b=0LNTMB+qiHPz1eHGcLyPLE1FcSmW30xptS1xcbd9Vmy1Wdx3/tg96AUrAeuoDSznHE
         b96zAG+sJHLASokmbete92FHI1G8rD8PgjH/IUCJ48Tl6fBZwkdKU7AGYAJ/2TTCBAuV
         V5qcBCIuomDpUVXLeDNYSpTPEpAtaUrm+l5S3wIkZXlyzTsEL9utiVdoKTmYNcyXzM53
         afDdaokbJdrmm6h904P49QEgm1/76LVyjh3QvpzVmVkmz7bsRleBypROkS4GERE0UD87
         ZVEKMlCkVw8y2lUJwx8OvYTIALGHLsrjHk3cICv8uCsCQleDeMK+Y7mxJ4og8isdmEJm
         aNTw==
ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816;
        h=message-id:mime-version:auto-submitted:to:subject:from:date
         :dkim-signature;
        bh=/kHg6GHVOA4im8+tNe6f5EdTttqwbtTK3EvxVBpLPe0=;
        b=VNuEQyKlo1YCgSBznYzBqNzJzJHaTqIxYzzEOhVfWH7KP4IdBvSQ5nwbigujfhq+a1
         ch04W6nNbOaeTvC6hRdztL+Qw+lria0hOIx6eo3Hc8swQseAv6+iKh8hwbL4DM1tr84l
         wDmcPy808/tamGIBHacA1vhe7LU1ZWhaFmBcynllMaLXJDxDsJuZc2pAfQe3cu+1da0h
         twdEY+fYo8tVlVC/A0fb6iedP57tYygfg1LMSZhOxqwWiFDuNsOOn2Px0geyYcHWiyTj
         uZEtS4L1nfYr2J2tbeZsHMzrjPkM4etZMK52duSiNpMZnV0CN4dioHQcSskrik8Jgnmh
         Ki/g==
ARC-Authentication-Results: i=1; mx.google.com;
       dkim=pass header.i=@example.com header.s=example header.b="Kh/wMFFv";
       spf=pass (google.com: domain of postmaster@smtp1.example.com designates <IP-Address> as permitted sender) smtp.helo=smtp1.example.com;
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=example.com
Return-Path: <>
Received: from smtp1.example.com (smtp1.example.com. [<IP-Address>])
        by mx.google.com with ESMTPS id 144-v6si4528390qkh.294.2018.09.26.10.59.51
        for <customerservice@example.com>
        (version=TLS1_2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128);
        Wed, 26 Sep 2018 10:59:51 -0700 (PDT)
Received-SPF: pass (google.com: domain of postmaster@smtp1.example.com designates <IP-Address> as permitted sender) client-ip=<IP-Address>;
Authentication-Results: mx.google.com;
       dkim=pass header.i=@example.com header.s=example header.b="Kh/wMFFv";
       spf=pass (google.com: domain of postmaster@smtp1.example.com designates <IP-Address> as permitted sender) smtp.helo=smtp1.example.com;
       dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=example.com
Received: by smtp1.example.com (Postfix) id 1CEE260DBC; Wed, 26 Sep 2018 17:59:51 +0000 (UTC)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=example.com; s=example; t=1537984791; bh=DalucSR/izsrTI/4cwdDwKrGi8R0OywUerOF7byykLI=; h=Date:From:Subject:To; b=Kh/wMFFvEE/uPx/7qKnYVZZACU6zzLl9S+Jwr1hXSBhIg0mfkqpVXgxvhUxqNkJXw
     xIPvmuJU9ERlA5RqT+xUC3y4kkxIbig6gBogUEFtOkbp1bNj+yWEKxcFpHJXEnDneP
     Na3dzhGZScaUK83sKEPMFkjubyiPR/6uoc5zcEVc=
Date: Wed, 26 Sep 2018 17:59:51 +0000 (UTC)
From: Mail Delivery System <MAILER-DAEMON@example.com>
Subject: Undelivered Mail Returned to Sender
To: customerservice@example.com
Auto-Submitted: auto-replied
MIME-Version: 1.0
Content-Type: multipart/report; report-type=delivery-status; boundary="DF7BD600B7.1537984791/smtp1.example.com"
Message-Id: <20180926175951.1CEE260DBC@smtp1.example.com>

Выход postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
bounce_notice_recipient = mailer-daemon@example.com
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
data_directory = /var/lib/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = localhost
inet_protocols = ipv4
internal_mail_filter_classes = bounce
mail_owner = postfix
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
milter_default_action = accept
milter_protocol = 2
mydestination = $myhostname, localhost.$mydomain, localhost
mydomain = example.com
myhostname = smtp1.example.com
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
non_smtpd_milters = $smtpd_milters
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix-2.6.6/README_FILES
sample_directory = /usr/share/doc/postfix-2.6.6/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtp_tls_security_level = may
smtpd_milters = inet:127.0.0.1:8891

Как уже упоминал Майкл, пустой Return-Path <> рекомендуется для сообщений NDR. Как вы знаете, многие MTA основывают применение подписей DKIM на этом заголовке. Это привело к отсутствию подписей DKIM, которую вы смогли разрешить.

Поскольку SPF откатывается к домену HELO / EHLO, если обратный путь отсутствует, как указано в спецификации:

http://www.openspf.org/svn/project/specs/rfc4408.txt

Например, если обратный путь был нулевым, то используется домен EHLO / HELO со связанными с ним проблемами (см. Раздел 2.1).

Если ваш основной вопрос заключается в том, чтобы согласовать DMARC в этих письмах, вам достаточно убедиться, что вы применяете DKIM к письмам с отчетом о недоставке. В этой ситуации вам не нужно настраивать отдельные записи SPF для поддоменов smtp. Это рекомендуется для предотвращения потери сообщений о недоставке для получателей, не поддерживающих DMARC.

Если у вас есть длинный список SMTP-серверов, вы также можете опубликовать SPF с подстановочными знаками, который разрешает ваши IP-адреса.

Вам это помогает?

С Уважением,

Михиэль

Анализатор DMARC