Witam,
Jako, że z e-maili korzystam na co dzień (a lubię wiedzieć jak działają
technologie, z którym korzystam), postanowiłem zobaczyć, jak to wygląda
od drugiej strony i założyć własny serwer pocztowy.
Jakiś czas temu zająłem się kwestią fetchmaila, z którego korzystam, aby
móc pobierać wiadomości z zewnętrznych skrzynek pocztowych na lokalne
konto, zlokalizowane na moim serwerze. Natknąłem się jednak na problem z
pobieraniem niektórych e-maili, pochodzących z raczej szeroko znanych
usług (więc - jak przypuszczam - z działających prawidłowo serwerów
pocztowych).
Przy dostarczaniu wspomnianych wiadomości z fetchmaila zwracany jest
błąd "501 5.1.7 Bad sender address syntax".
Analizując nagłówki tego typu "problematycznych" wiadomości powtarza
jedna kwestia - posiadają one w wartości nagłówka "Return-Path", po 2
znakach nowej linii (CR LF) dodatkową spację, przykładowo:
...
Return-Path: <01000171e5ba5a76-8fcd01c1-f182-4d95-985d-bfdde77d05eb-000000@m
ail.crowdin.com>
...
Czyli szesnastkowo (końcówka wartości, problematyczne znaki zaznaczyłem
nawiasami klamrowymi {}):
30 30 40 6D{0D 0A 20}61 69 6C 2E 63 72 6F 77 64 69 6E 2E 63 6F 6D 3E
0 0 @ m CR LF a i l . c r o w d i n . c o m >
Log postfixa z trybu szczegółowego zapisywania logów (opcja
"debug_peer_list"):
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: <
localhost[127.0.0.1]: MAIL
FROM:<01000171e5ba5a76-8fcd01c1-f182-4d95-985d-bfdde77d05eb@m
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: >
localhost[127.0.0.1]: 501 5.1.7 Bad sender address syntax
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
watchdog_pat: 0x55815ba4fa70
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: <
localhost[127.0.0.1]:
ail.crowdin.com> SIZE=9287
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
match_string: smtpd_forbidden_commands:
ail.crowdin.com> ~? connect
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
match_string: smtpd_forbidden_commands:
ail.crowdin.com> ~? get
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
match_string: smtpd_forbidden_commands:
ail.crowdin.com> ~? post
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
match_list_match:
ail.crowdin.com>: no match
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: report
unknown command to all milters
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
milter8_unknown_event: milter inet:localhost:8891: unknown command:
ail.crowdin.com>
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: event:
SMFIC_UNKNOWN; macros: (none)
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
skipping event SMFIC_UNKNOWN for milter inet:localhost:8891
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
milter8_unknown_event: skip milter inet:localhost:8893
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: >
localhost[127.0.0.1]: 502 5.5.2 Error: command not recognized
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
watchdog_pat: 0x55815ba4fa70
mail | Apr 30 13:56:02 mail fetchmail[1551]: reading
message user...@o2.pl@
poczta.o2.pl:1 of 1 (9287 octets) (log message
incomplete)
mail | Apr 30 13:56:02 mail fetchmail[1551]: SMTP
error: 501 5.1.7 Bad sender address syntax
mail | Apr 30 13:56:02 mail fetchmail[1551]: not flushed
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: <
localhost[127.0.0.1]: RSET
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: >
localhost[127.0.0.1]: 250 2.0.0 Ok
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]:
watchdog_pat: 0x55815ba4fa70
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: <
localhost[127.0.0.1]: QUIT
mail | Apr 30 13:56:02 mail postfix/smtpd[1556]: >
localhost[127.0.0.1]: 221 2.0.0 Bye
Czyli wartość nagłówka "Return-Path" jest rozdzielana na dwie oddzielne
instrukcje. O ile się nie mylę, przełamanie wartości nagłówka działa
przynajmniej częściowo zgodnie z zaleceniem z RFC 2822. Oczywiście nie
"usprawiedliwia" to podziału wartości na dwie instrukcje.
Czy ma ktoś pomysł, gdzie szukać dalej?
Jest to błąd w konfiguracji po mojej stronie, czy też po stronie serwera
pocztowego "pośrednika"?
Przesyłając tego typu wiadomości bezpośrednio na konto na moim serwerze
nie dochodzi do podziału wartości nagłówków, więc nie raczej nie jest to
wina nadawcy wiadomości.
Zgłębiam temat już dłuższy czas, ale w tym miejscu utknąłem.
Pozdrawiam,
q0o