OpenDKIM / Postfix подписывает почту, отправленную с консоли, но не из почтового клиента / SMTP

У меня Postfix работает на машине Debian 9, и я установил opendkim (оба из репозиториев Debian). Сокет / соединение milter - это inet: localhost: 8892, и межсетевой экран iptables разрешает это соединение ( telnet localhost 8892 завершается успешно).

Однако я получаю подписанные сообщения только в том случае, если отправляю электронное письмо от консоль (с mail -s "testing DKIM" my-address @ not-the-same-domain ), но не в том случае, если я отправляю его из Thunderbird. Обратите внимание, что в Thunderbird я использую ssh-туннелирование, чтобы почтовый сервер видел, что соединение исходит от localhost. (то есть на моем рабочем столе я запускаю ssh -Llocalhost: 2525: my-server: 25 tunnel @ my-server , и я говорю Thunderbird, что исходящий почтовый сервер - localhost, порт 2525.

] Это пример подписи, которую я получаю при отправке с консоли:

DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=[omitted -- but it shows the correct domain];
    s=mail; t=1557228588;
    bh=slJTHzrIw+6TkIIPpFmGER34xtLwMLZ2md99gvHoFTE=;
    h=To:Subject:Date:From:From;
    b=jtOM5OOM83l [ ··· several lines of "gibberish" ··· ] 4qdpSt4l86DEA==

Есть идеи относительно того, что могло вызвать эту проблему?

[[EDIT]] Проблема становится все более загадочной. При просмотре журналов я заметил предупреждение внешний хост XXXX.my-service-provider.com попытался отправить как my-domain.com

Я настроил / etc / hosts , / etc / hostname ... Наконец я понял, что мне нужно настроить обратный поиск DNS, и я сделал это. Теперь команда hostname отвечает полным доменным именем (правильный домен, для которого я настраиваю DKIM).

Теперь в / var / log / syslog , когда я отправляю электронной почты, я получаю сообщение внешний хост * правильное-полное доменное имя * попытался отправить как * правильное-полное доменное имя * . И переданное сообщение не содержит подписи DKIM.

Если я использую telnet localhost 25 , приветствую SMTP-сервер с помощью helo the-right-FQDN , сообщение будет DKIM- подписано; журналы показывают, что за передачу отвечало соединение с localhost (127.0.0.1) .

Есть идеи?
[[КОНЕЦ РЕДАКТИРОВАНИЯ]]

0
задан 8 May 2019 в 03:35
2 ответа

Оказывается, проблема была вызвана отсутствием параметра InternalHosts. Для текущей версии opendkim в Debian 9 (2.11) я решил это следующим образом:

Отредактировал файл /etc/opendkim.conf и добавил следующую строку:

InternalHosts file:/etc/opendkim-trustedhosts.conf

Затем файл /etc/opendkim-trustedhosts.conf содержит:

127.0.0.1
x.x.x.x (the actual public IP of the server)

И вуаля --- перезапустите, и проблема устранилась!

Некоторые различия, которые я заметил относительно другая информация, которую я нашел там --- из того, что я мог видеть, в CentOS (не уверен, более старые версии или все еще такие), конфигурация по умолчанию: есть каталог etc / opendkim , а внутри в этом каталоге есть, среди прочего, файл TrustedHosts.conf ; в файле /etc/opendkim.conf уже есть директива InternalHosts , указывающая на файл TrustedHosts. В Debian 9 его нужно создавать вручную.

0
ответ дан 5 December 2019 в 03:02

Аналогичная проблема и контекст: использование openDKIM с Postfix в качестве MTA, который затем является ретранслятором только для аутентифицированных почтовых пользовательских агентов (MUA), более поздний подсчет, в частности, клиентов MS-Outlook, настроенных с подключениями SMTP + POP или SMTP + IMAP к Postfix MTA через TLS / SSL + SASL (аутентификация с логином и паролем) через порт 587 в моем случае.

Когда используется локальная консоль mailx или sendmail, интеграция openDKIM контролируется с помощью параметра non_smtpd_milters в postfix / main.cf , тогда как smtpd_milters для управления случаем входящих сообщений электронной почты SMTPD от аутентифицированных MUA. Итак, сначала вам может потребоваться проверить, что оба параметра выровнены, например например,

smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters

Затем, когда действительная подпись DKIM создается для локальных сообщений электронной почты (через mailx или sendmail), но не для сообщений электронной почты от аутентифицированных MUA, это, скорее всего, проблема с определением того, кто является сообщением. отправителя и, таким образом, предотвращает сканирование openDKIM в домен «От:», для которого настроена подпись. Скорее всего, вы нашли следы вроде:

opendkim[9530]: E3B6A13CBED: can't determine message sender;

, что в моем случае было связано с вмешательством в параметр header_checks в Postfix. Ищите его в main.cf или master.cf (который может переопределять параметры в main.cf), например.

-o header_checks=regexp:/etc/postfix/submission_header_cleanup

и убедитесь, что связанные правила очистки заголовка НЕ содержат регулярное выражение типа:

/^Received:/            IGNORE

, которое вы должны затем закомментировать или удалить.

Наконец, убедитесь, что postfix / main.cf скажет Postfix передать достаточно данных в opendkim через протокол milter с опцией вида:

milter_mail_macros =  i {mail_addr} {client_addr} {client_name} {auth_type} {auth_authen}
0
ответ дан 19 December 2019 в 23:24

Теги

Похожие вопросы