postfix: milter-reject: END-OF-MESSAGE от…: 4.7.1 Служба недоступна (opendkim)

I настроил OpenDkim для работы с postfix, и при попытке отправить почту я получаю следующую ошибку:

postfix/cleanup[11542]: 40F271A291A: milter-reject: END-OF-MESSAGE from ***[***]: 4.7.1 Service unavailable - try again later; from=<me@example.com> to=<me2@hotmail.es> proto=ESMTP helo=<[192.168.1.10]>

Я настроил opendkim на использование сокета unix, и он работает:

[chazy@mail ~]$ sudo netstat -nalp | grep dkim
unix  2      [ ACC ]     STREAM     LISTENING     144135   11267/opendkim       /run/opendkim/opendkim.sock
unix  3      [ ]         STREAM     CONNECTED     147626   11267/opendkim       /run/opendkim/opendkim.sock
unix  2      [ ]         DGRAM                    144137   11267/opendkim

Opendkim запускается собственным пользователем, как это было предложено вики Arch (а также другими рекомендациями по безопасности). Папки также принадлежат opendkim: mail.

Я использую один и тот же селектор и ключ подписи для всех доменов, это проблема?

Конфигурация постфикса выглядит следующим образом:

# DKIM
milter_default_action = accept
smtpd_milters = unix:/run/opendkim/opendkim.sock
non_smtpd_milters = unix:/run/opendkim/opendkim.sock

Нет службы защиты от спама на данный момент установлена ​​только базовая конфигурация postfix / dovecot / opendkim для тестирования сервера.

Конфигурация Opendkim:

# /etc/opendkim/opendkim.conf

BaseDirectory           /var/lib/opendkim
Canonicalization        relaxed/simple
Domain                  domain1.com domain2.com
ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
InternalHosts           refile:/etc/opendkim/TrustedHosts
KeyFile                 /etc/opendkim/201704.private
KeyTable                refile:/etc/opendkim/KeyTable
Selector                201704
SigningTable            refile:/etc/opendkim/SigningTable
Socket                  local:/run/opendkim/opendkim.sock
Syslog                  Yes
TemporaryDirectory      /run/opendkim
UMask                   002
UserID                  opendkim:mail

Конфигурация TrustedHosts:

# /etc/opendkim/TrustedHosts

# Trusted Hosts List
127.0.0.1
::1
x.x.x.x # Server IP
mail.maindomain.com

# Domains
maindomain.com
domain2.com
3
задан 28 April 2017 в 17:42
3 ответа

В моем случае проблема заключалась в том, что у файла ключа подписи был root-владелец, поэтому я сделал следующее:

sudo chown opendkim:mail /etc/opendkim/selector.private

Исправил проблему.

Если это не ваша проблема, не забудьте взглянуть на журнал, для обоих! postfix и opendkim (я забыл найти opendkim, и это была ошибка):

journalctl --follow --unit postfix.service --unit opendkim.service
4
ответ дан 3 December 2019 в 05:39

Попробуйте удалить "* @" из файла, который вы используете в качестве таблицы подписи. Это то, что было причиной этого для меня, хотя в моем opendkim.conf было

SigningTable      refile:<directory to signing table file>

.

1
ответ дан 3 December 2019 в 05:39

В моем случае исходящее сообщение было просто слишком большим.

После исправления проблемы я получил:

Sep 24 20:05:20 va1my postfix/smtp[23682]: C553B48F30: to=<XXX>, relay=XXXXX:25, delay=2979299, delays=2979298/0.01/0.13/0.72, dsn=5.2.3, status=bounced (host XXXXXX said: 552-5.2.3 Your message exceeded message size limits. Please visit 552-5.2.3  XXXX  to view our size 552 5.2.3 guidelines.  (in reply to end of DATA command))

Чтобы исправить это, я добавил в/etc/opendkim.conf:

MaximumHeaders 0

и перезапустил opendkimservice opendkim restart(илиsystemctl restart opendkim).

Установка ограничения в 256 КБ не помогло, потому что заголовок был больше, поэтому я установил 0, что отключает ограничение. Я мог бы снова прокомментировать строку, так как основная причина исчезла.

Примечание, истинная причина.

Заголовки, вероятно, были слишком большими из-за того, что вывод журнала был передан в sendmail без добавления заголовка.

Я добился этого вот так и не понял, что эта почта застряла.:

grep FILTER FILE | sendmail user@example.com

Чтобы правильно написать скрипт с помощью «sendmail», я сделал следующее::

#!/bin/bash
# TMP_FILE and SUBJECT are set somewhere in the script.

# Prepend the $SUBJECT to the script output sent by mail.

  ( echo "Subject: $SUBJECT" \
    && cat $TMP_FILE \
  ) | \
  /usr/sbin/sendmail $1
0
ответ дан 24 September 2021 в 18:46

Теги

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