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

Sendmail отправляет пустых получателей через LMTP

Название в значительной степени подводит итог. Локальная почта работает нормально через LMTP, однако нелокальная почта (виртуальный хостинг) испытывает трудности. Я предоставил как можно больше информации ниже, пытаясь сохранить ее актуальность. Я не могу понять, что здесь не так.

Вещи, которые я проверил:

Спецификация почтовой программы:

Mdovecot, P=[IPC], F=SXmnz9,
    S=EnvFromSMTP/HdrFromL, R=EnvToSMTP/HdrToL, E=\r\n,
    T=DNS/RFC822/SMTP,
    A=FILE /var/run/dovecot/lmtp

SMTP-разговор:

$ telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mail.example.com ESMTP Sendmail; Mon, 31 Oct 2011 23:29:54 GMT
EHLO localhost
MAIL FROM: root@example.com
RCPT TO: mscharley@example.com
DATA
To: mscharley@example.com
From: root@example.com
Subject: Hello world!

Hello there, everyone!
.
quit
250-mail.example.com Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
250 2.1.0 root@example.com... Sender ok
250 2.1.5 mscharley@example.com... Recipient ok
354 Enter mail, end with "." on a line by itself
250 2.0.0 p9VNTswi016356 Message accepted for delivery
221 2.0.0 mail.example.com closing connection
Connection closed by foreign host.

Результирующий LMTP-диалог:

# socat -v UNIX-LISTEN:lmtp-socat UNIX-CLIENT:lmtp
< 220 mail.example.com Dovecot LMTP ready\r
> LHLO mail.example.com\r
< 250-mail.example.com\r
< 250-8BITMIME\r
< 250-ENHANCEDSTATUSCODES\r
< 250 PIPELINING\r
> MAIL From:<root@example.com>\r
< 250 2.1.0 OK\r
> RCPT To:<>\r
> DATA\r
< 550 5.1.1 <> User doesn't exist: \r
< 554 5.5.1 No valid recipients\r
> RSET\r
< 250 2.0.0 OK\r
> QUIT\r
< 221 2.0.0 Client quit\r

Трансляция адреса sendmail (думаю, так работает внутренняя обработка, кто-нибудь поправит меня, если нет, и я это исправлю):

$ sendmail -bt
ADDRESS TEST MODE (ruleset 3 NOT automatically invoked)
Enter <ruleset> <address>
> 0,3,EnvToSMTP mscharley@example.com
parse              input: mscharley @ example . com
Parse0             input: mscharley @ example . com
Parse0           returns: mscharley @ example . com
ParseLocal         input: mscharley @ example . com
ParseLocal       returns: mscharley @ example . com
Parse1             input: mscharley @ example . com
Parse1           returns: $# local $: mscharley @ example . com
parse            returns: $# local $: mscharley @ example . com
canonify           input: $# local $: mscharley @ example . com
canonify         returns: $# local $: mscharley @ example . com
EnvToSMTP          input: $# local $: mscharley @ example . com
EnvToSMTP        returns: $# local $: mscharley @ example . com

Иногда вам просто нужно все напечатать, чтобы привести в порядок свой разум.

Это было вызвано пустым доменом в mailertable, то есть:

example.com    dovecot:

Изменение этого на следующее полностью решило проблему:

example.com    dovecot:example.com