SMTP 550 5.1.1, но почтовый ящик существует

Я создаю почтовый ящик на нашем сервере Postfix. У нас есть скрипт, который синхронизирует наш LDAP с нашей Webmail (~RoundCube), а затем мы должны выполнить следующую команду на сервере Postfix:

echo -e "test@domain.tld\tOK" >> /etc/postfix/virtual_mailbox
echo -e "test@domain.tld\talias.test@domain.tld" >> /etc/postfix/virtual_alias # if we want an alias
postmap /etc/postfix/virtual_mailbox && postmap /etc/postfix/virtual_alias
/etc/init.d/postfix reload

Эта процедура работала до прошлой недели, и мы не можем объяснить/решить проблему.

Отправка тестового письма через Webmail на вновь созданный почтовый ящик возвращает:

<test@domain.tld>: host 127.0.0.1[127.0.0.1] said: 550-Mailbox unknown.  Either
    there is no mailbox associated with this 550-name or you do not have
    authorization to see it. 550 5.1.1 User unknown (in reply to RCPT TO
    command)

Однако Postfix отвечает 250 2.1.0 Ok на команду RCP TO::

$ nc our.mail.server.tld 25
220 our.mail.server.tld ESMTP Postfix (CentOS)
HELO domain.tld
250 our.mail.server.tld
MAIL FROM:<>
250 2.1.0 Ok
RCPT TO:<test@domain.tld>
250 2.1.0 Ok
DATA
Subject: testing
test email
.
250 2.0.0 Ok: queued as 7E8B043

Но в maillog'е указано 550 5.1.1 User unknow.... (журнал анонимизирован)

# edited following Nikita Kipriyanov recommendation 
Jul  8 15:07:36 srv postfix/smtp[30469]: > 127.0.0.1[127.0.0.1]:10024: RCPT TO:<test@domain.tld> ORCPT=rfc822;test@domain.tld
Jul  8 15:07:36 srv postfix/smtp[30469]: < 127.0.0.1[127.0.0.1]:10024: 250 2.1.5 Recipient <test@domain.tld> OK
Jul  8 15:07:37 srv postfix/smtpd[30492]: < localhost[127.0.0.1]: RCPT TO:<test@domain.tld> ORCPT=rfc822;test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: extract_addr: input: <test@domain.tld>
Jul  8 15:07:37 srv postfix/smtpd[30492]: smtpd_check_addr: addr=test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: send attr address = test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: input attribute value: test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: rewrite_clnt: local: test@domain.tld -> test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: send attr address = test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: input attribute value: test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: resolve_clnt: `' -> `test@domain.tld' -> transp=`lmtp' host=`127.0.0.1:24' rcpt=`test@domain.tld' flags= class=virtual
Jul  8 15:07:37 srv postfix/smtpd[30492]: ctable_locate: install entry key test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: extract_addr: in: <test@domain.tld>, result: test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: ctable_locate: leave existing entry key test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: milter_macro_lookup: result "test@domain.tld"
Jul  8 15:07:37 srv postfix/smtpd[30492]: ctable_locate: leave existing entry key test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: ctable_locate: leave existing entry key test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: milter8_rcpt_event: milter inet:127.0.0.1:8891: rcpt <test@domain.tld> ORCPT=rfc822;test@domain.tld
Jul  8 15:07:37 srv postfix/smtpd[30492]: event: SMFIC_RCPT; macros: {rcpt_addr}=test@domain.tld {rcpt_host}=127.0.0.1:24 {rcpt_mailer}=lmtp
Jul  8 15:07:37 srv postfix/lmtp[30505]: > 127.0.0.1[127.0.0.1]:24: RCPT TO:<test@domain.tld>
Jul  8 15:07:37 srv cyrus/lmtp[18927]: verify_user(user.test) failed: Mailbox does not exist
Jul  8 15:07:37 srv postfix/lmtp[30505]: send attr original_recipient = test@domain.tld
Jul  8 15:07:37 srv postfix/lmtp[30505]: send attr recipient = test@domain.tld
Jul  8 15:07:37 srv postfix/lmtp[30505]: send attr dsn_orig_rcpt = rfc822;test@domain.tld
Jul  8 15:07:37 srv amavis[23265]: (23265-17) Passed BAD-HEADER-7 {RelayedInternal}, MYNETS LOCAL [172.16.10.39]:2828 <> -> <test@domain.tld>, mail_id: nTFlKNl0Vr0b, Hits: 5.677, size: 300, queued_as: C7DB445, 1476 ms
Jul  8 15:07:37 srv postfix/smtp[30469]: 73B0143: to=<test@domain.tld>, relay=127.0.0.1[127.0.0.1]:10024, delay=49, delays=48/0/0/1.5, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as C7DB445)
Jul  8 15:07:37 srv postfix/lmtp[30505]: C7DB445: to=<test@domain.tld>, relay=127.0.0.1[127.0.0.1]:24, delay=0.11, delays=0.09/0/0/0.03, dsn=5.1.1, status=bounced (host 127.0.0.1[127.0.0.1] said: 550-Mailbox unknown.  Either there is no mailbox associated with this 550-name or you do not have authorization to see it. 550 5.1.1 User unknown (in reply to RCPT TO command))

Есть идеи по поводу такого поведения? Почему RCPT TO возвращает 250 2.1.5 Ok через netcat, но в итоге остается 550 5.1.1 User unknown ?


master.cf
# ==========================================================================
# service type  private unpriv  chroot  wakeup  maxproc command + args
#               (yes)   (yes)   (yes)   (never) (100)
# ==========================================================================
smtp      inet  n       -       n       -       -       smtpd
submission inet n       -       n       -       -       smtpd
  -o smtpd_tls_security_level=encrypt
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
#628      inet  n       -       n       -       -       qmqpd
pickup    fifo  n       -       n       60      1       pickup
cleanup   unix  n       -       n       -       0       cleanup
qmgr      fifo  n       -       n       300     1       qmgr
#qmgr     fifo  n       -       n       300     1       oqmgr
tlsmgr    unix  -       -       n       1000?   1       tlsmgr
rewrite   unix  -       -       n       -       -       trivial-rewrite
bounce    unix  -       -       n       -       0       bounce
defer     unix  -       -       n       -       0       bounce
trace     unix  -       -       n       -       0       bounce
verify    unix  -       -       n       -       1       verify
flush     unix  n       -       n       1000?   0       flush
proxymap  unix  -       -       n       -       -       proxymap
proxywrite unix -       -       n       -       1       proxymap
smtp      unix  -       -       n       -       -       smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay     unix  -       -       n       -       -       smtp
        -o smtp_fallback_relay=
#       -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq     unix  n       -       n       -       -       showq
error     unix  -       -       n       -       -       error
retry     unix  -       -       n       -       -       error
discard   unix  -       -       n       -       -       discard
local     unix  -       n       n       -       -       local
virtual   unix  -       n       n       -       -       virtual
lmtp      unix  -       -       n       -       -       lmtp
anvil     unix  -       -       n       -       1       anvil
scache    unix  -       -       n       -       1       scache

smtp-amavis unix -      -       n     -       8  smtp
    -o smtp_data_done_timeout=1200
    -o smtp_send_xforward_command=yes
    -o disable_dns_lookups=yes

127.0.0.1:10025 inet n  -       n     -       -  smtpd
    -o content_filter=
    -o local_recipient_maps=
    -o relay_recipient_maps=
    -o smtpd_restriction_classes=
    -o smtpd_delay_reject=no
    -o smtpd_client_restrictions=permit_mynetworks,reject
    -o smtpd_helo_restrictions=
    -o smtpd_sender_restrictions=
    -o smtpd_recipient_restrictions=permit_mynetworks,reject
    -o smtpd_data_restrictions=reject_unauth_pipelining
    -o smtpd_end_of_data_restrictions=
    -o mynetworks=127.0.0.0/8,<other_valids_networks>
    -o smtpd_error_sleep_time=0
    -o smtpd_soft_error_limit=1001
    -o smtpd_hard_error_limit=1000
    -o smtpd_client_connection_count_limit=0
    -o smtpd_client_connection_rate_limit=0
    -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
1
задан 10 July 2021 в 13:53
1 ответ

Postfix просто возвращает то, что ему было сказано службой LMTP, когда он пытался передать почту для доставки. Если расширенный псевдоним правильный, вы должны проверить эту службу , а не (только) Postfix.


К этому сценарию могло привести много всего, но совершенно очевидно, что список пользователей / псевдонимов Postfix больше не синхронизирован с пользователем сервера. Postfix передает почту (обход через Amavis усложняет журналы, но делает похоже, не проблема).

Следующий этап диагностики: сравните список пользователей, доступный для вашего MDA ( Cyrus IMAPd , судя по сообщению об ошибке), с фактическим результатом ваших постфиксных виртуальных сопоставлений.

Выполните запрос к вашим картам постфиксов с помощью следующих команд:

postmap -v -v -q test@domain.tld hash:/etc/postfix/virtual_mailbox
postmap -v -v -q test@domain.tld hash:/etc/postfix/virtual_alias

Такой запрос лучше, чем просто уверенность в том, что вы выполнили команду правильно, потому что тогда дубликаты и опечатки более очевидны. Я думаю ваша установка обычно приводит только к одной из двух карт.

Запросите список пользователей службы LMTP, используя информацию, которую вы найдете в ее конфигурации, чтобы убедиться, что почтовый ящик действительно существует. Чтобы напрямую запросить LDAP, используйте ldapsearch -U .. -H ldaps: // .. , чтобы исследовать конкретные серверы, используйте их предоставленные утилиты: для Dovecot используйте doveadm пользователь .. - для Cyrus используйте cyrusadm info [имя] , ..

Также учитывайте режимы сбоя, такие как сервер LDAP, на котором вы храните свой список пользователей, был временно или постоянно недоступны для сервера или сценария обслуживания, предназначенного для получения этих данных.


Вы могли бы упростить это и все еще облегчить отладку в будущем, добавив подходящие параметры syslog_name в свой master.cf - так вы сможете легче определить, какой из ваших (очевидно, несколько аналогичные) службы зарегистрировали какие строки.

submission inet n       -       n       -       -       smtpd
 -o syslog_name=postfix/submission
 -o smtpd_tls_security_level=encrypt
 -o ...
...
smtps     inet  n       -       n       -       -       smtpd
 -o syslog_name=postfix/smtps
 -o smtpd_tls_wrappermode=yes
 -o ...
...
127.0.0.1:10025 inet n  -       n     -       -  smtpd
 -o syslog_name=postfix/description
 -o ...
0
ответ дан 28 July 2021 в 13:22

Теги

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