Название в значительной степени подводит итог. Локальная почта работает нормально через LMTP, однако нелокальная почта (виртуальный хостинг) испытывает трудности. Я предоставил как можно больше информации ниже, пытаясь сохранить ее актуальность. Я не могу понять, что здесь не так.
Вещи, которые я проверил:
example.com
в {VirtHost}
local
(хотя local
тоже доставляет в 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