Mein exim versucht's nicht nochmal

  • Moin,


    ich bin etwas ratlos. Mein exim versucht augenscheinlich Mails nicht erneut zuzustellen. Das ist natürlich fatal bei Greylisting wie ich heute herausfinden durfte.

    In meiner Config habe ich folgenden (default) Eintrag:

    Code
    1. begin retry
    2. # Address or Domain Error Retries
    3. # ----------------- ----- -------
    4. * * F,2h,15m; G,16h,1h,1.5; F,4d,6h

    Wenn eine Mail nicht sofort zugestellt werden kann, habe ich folgende (debug) Ausgabe:

    Code
    1. 1028 delivering 1gtEhX-0001J3-Kf to server.example.org [85.13.XXX.XX] (j@example.org)
    2. 1028 SMTP>> RCPT TO:<j@example.org>
    3. 1028 SMTP<< 450 4.2.0 <j@example.org>: Recipient address rejected: Greylisted, see http://example.org/what-is-greylisting
    4. 1028 added retry item for R:j@example.org:<info@webfoersterei.de>: errno=-44 more_errno=50,M flags=0
    5. 1026 reading retry information for R:j@example.org:<info@webfoersterei.de> from subprocess
    6. 1026 address match test: subject=j@example.org pattern=* # Ich vermute das * steht für die Retry-Rule, die erfolgreich gefunden wurde, denn:
    7. 1026 retry for R:j@example.org:<info@webfoersterei.de> = * 0 0 # s. Anmerkung
    8. 1026 Writing retry data for R:j@example.org:<info@webfoersterei.de>
    9. 1026 end delivery of 1gtEhX-0001J3-Kf

    Anmerkung:

    Das 0 0 sah für mich verdächtig aus, aberlt. Code scheint dies die Zeile 640 zu sein

    Code
    1. debug_printf("retry for %s = %s %d %d\n", rti->key, retry->pattern,
    2. retry->basic_errno, retry->more_errno);


    Das Problem:

    Danach passiert diesbezüglich nie wieder was. In den logs kommt danach weder die Message-ID noch "example.org" jemals wieder vor. In der exim message-Queue war die mail seit 21h drin (gestern Abend 17:30 Uhr abgeschickt). Ich hab die Mail manuell zum erneuten zustellen angewiesen und diesmal ging sie durch; erst danach in die retry-db geguckt, da war sie dann nicht mehr drin. Ich weiß also nicht ob sie real jemals drin stand, gehe aber davon aus, dass das passt.


    Ich habe dafür aber im Verlauf noch einige Einträge im Log gefunden. Und zwar immer dann, wenn eine E-Mail erfolgreich irgendwohin (zu mir oder woanders hin) zugestellt wurde. Dabei wird scheinbar in der retry-db geguckt, ob es zu dieser (nun erfolgreich) verlaufenen Zustellung noch Einträge gibt, die gefailed sind, um die direkt hinterher zu schicken.

    Ein grep nach "retry" ergibt also nur zu unregelmäßigen Zeiten Treffer, nämlich immer dann wenn wie gesagt eine Mail erfolgreich zugestellt wurde.


    Was ich vermisse sind "retry" Einträge im log, die Regelmäßigkeit aufweisen und versuchen Einträge aus der retry-db erneut zuzustellen. Warum gibt es die nicht? Fehlt irgendwas?


    In einem config-dump von exim exim -bP steht meine Retry-Rules nicht drin; ich vermute aber, dass das auch normal so ist. Immerhin matcht exim ja ansich die richtige Retry-Rule. Er versucht es nur nicht nochmal. Fehlt da irgendein Prozess, der nicht läuft oder sowas? :wacko:

  • Hab ich's jetzt echt direkt wieder selber gefunden, oder was?

    Aktuell starte ich exim mit /usr/sbin/exim -bd -d

    Im manual steht:

    Quote

    -bd
    This option runs Exim as a daemon, awaiting incoming SMTP connections. Usually the -bd option is combined with the -q<time> option, to specify that the daemon should also initiate periodic queue runs.

    Kein -q , keine Queue-Runs, wa?