Problem z postfix „transport_maps lookup failure”

Postanowiłem opublikować tutaj opis problemu, który został odkryty przeze mnie dawno dawno temu, ale widziałem linkowania z zewnętrznych stron do opisu.

  1. Nov 23 16:26:13 server postfix/trivial-rewrite[13358]: warning: do not list domain server.pl in BOTH mydestination and virtual_mailbox_domains
  2. Nov 23 16:26:13 server postfix/trivial-rewrite[13358]: warning: mysql query failed: Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (latin2_general_ci,COERCIBLE) for operation '='
  3. Nov 23 16:26:13 server postfix/trivial-rewrite[13358]: warning: transport_maps lookup failure
  4. Nov 23 16:26:13 server postfix/smtpd[18747]: NOQUEUE: reject: RCPT from xxx.internetdsl.tpnet.pl[83.19.xx.xx]: 451 <solitary @server.pl>: Temporary lookup failure; from=<solitary@example.com> to=<solitary??@server.pl> proto=ESMTP helo=<m>
  5. Nov 23 16:26:13 server postgrey[2436]: delayed 620 seconds: client=xxx.internetdsl.tpnet.pl, from=solitary@example.com, to=solitaryść@server.pl
  6. Nov 23 16:26:13 server postfix/smtpd[18747]: NOQUEUE: reject: RCPT from xxx.internetdsl.tpnet.pl[83.19.xx.xx]: 451 <solitary @server.pl>: Temporary lookup failure; from=<solitary@example.com> to=<solitary??@server.pl> proto=ESMTP helo=<m>
  7. Nov 23 16:26:14 server postfix/trivial-rewrite[13358]: warning: transport_maps lookup failure

Gdy postfix dostanie nieoczekiwany znak, np. nieobsługiwany przez kodowanie ustawione dla pola w bazie MySQL (np. polskie znaki, przy kodowaniu pola w MySQLu latin1)
to zaczyna sypać błędami
błąd wykryty w postfix 2.1.5-9 na systemie Debian z kernelem 2.6.10
postfix skonfigurowany do korzystania z mysqla
mysql ver. 4.1.11a
Niesprawdzone dokładnie, ale najprawdopodobniej po pewnym czasie mysql upora się z błędami  i dalej zaczyna działać poprawnie do momentu, gdy ponownie nie przyjdzie taka wiadomość. Warto usunąć taką wiadomość z kolejki, bo niedostarczona będzie co 5-10 minut blokowała cały system pocztowy.
Rozwiązanie:
Na razie brak – przypuszczalnie upgrade
Najprawdopodobnie pomoże jeszcze nadpisanie domyślnych zapytań do bazy danych własnymi, które będą konwertować do takiego samego kodowania w jakim jest pole (np. ze stratą wszystkich nieprzewidzianych znaków).

 

Dodaj komentarz