
Die Postfix-Datei master.cf enthält eine Definition zum Aufwecken des qmgr-Dienstes:
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (no) (never) (100)
# ==========================================================================
...
qmgr unix n - n 300 1 qmgr
...
Von qmgrmanpage, „wartet auf das Eintreffen eingehender E-Mails und arrangiert ihre Zustellung über die Zustellungsprozesse von Postfix.“ Das stimmt, ich sehe, wie die E-Mails gleich nach ihrem Eintreffen durch die Warteschlangen für eingehende und aktive E-Mails wandern.
Aber warum ist eine Weckzeit erforderlich? Der qmgr-Prozess ist die ganze Zeit aktiv und erledigt seine Arbeit. Wenn der Weckzeitplan festgelegt ist, erwarte ich, dass die Arbeit erst nach ihrem Anruf alle 300 Sekunden angezeigt wird, aber das macht nicht viel Sinn, da in diesem Fall jedes Mal nur die E-Mails verschoben werden.
Antwort1
Nach dem Aktivieren des ausführlichen „qmgr -v“ druckt das Protokoll weitere Erkenntnisse aus. Der Prozess scheint zur in master.cf definierten geplanten Zeit aufzuwachen:
2024-01-22T11:53:09.068813+01:00 mx postfix/qmgr[3633521]: trigger_server_accept_local: trigger arrived
2024-01-22T11:53:09.068835+01:00 mx postfix/qmgr[3633521]: master_notify: status 0
2024-01-22T11:53:09.068841+01:00 mx postfix/qmgr[3633521]: request: 87 (W)
2024-01-22T11:53:09.068848+01:00 mx postfix/qmgr[3633521]: request: 0 (?)
2024-01-22T11:53:09.068854+01:00 mx postfix/qmgr[3633521]: request ignored
2024-01-22T11:53:09.068861+01:00 mx postfix/qmgr[3633521]: qmgr_scan_start: start incoming queue scan
2024-01-22T11:53:09.068867+01:00 mx postfix/qmgr[3633521]: master_notify: status 1
2024-01-22T11:53:09.068874+01:00 mx postfix/qmgr[3633521]: done incoming queue scan
Und wenn eine neue E-Mail eintrifft, wird der qmgr hochgefahren und fügt die benannte Nachrichtendatei in die aktive Warteschlange ein.
2024-01-22T11:59:44.274607+01:00 mx postfix/qmgr[3633521]: trigger_server_accept_local: trigger arrived
2024-01-22T11:59:44.274630+01:00 mx postfix/qmgr[3633521]: master_notify: status 0
2024-01-22T11:59:44.274640+01:00 mx postfix/qmgr[3633521]: request: 87 (W)
2024-01-22T11:59:44.274649+01:00 mx postfix/qmgr[3633521]: request: 0 (?)
2024-01-22T11:59:44.274658+01:00 mx postfix/qmgr[3633521]: request ignored
2024-01-22T11:59:44.274667+01:00 mx postfix/qmgr[3633521]: qmgr_scan_start: start incoming queue scan
2024-01-22T11:59:44.274676+01:00 mx postfix/qmgr[3633521]: master_notify: status 1
2024-01-22T11:59:44.274685+01:00 mx postfix/qmgr[3633521]: qmgr_active_feed: queue incoming
2024-01-22T11:59:44.274695+01:00 mx postfix/qmgr[3633521]: qmgr_active_feed: incoming/419B440602
2024-01-22T11:59:44.274704+01:00 mx postfix/qmgr[3633521]: qmgr_message_alloc: active 419B440602
Ich kann also die Idee bestätigen, die auf derPostfix-Mailingliste
Ich glaube nicht, dass qmgr überhaupt laufen würde, außer wenn eine Verbindung über Port 25 eingeht. Ich habe mir den Quellcode von Postfix nicht angesehen, aber es scheint, als wäre Postfix intelligent genug, um nach qmgr zu suchen, wenn eine Verbindung eingeht, zu sehen, dass es nicht läuft, und es zu starten. Ebenso versucht es alle 5 Minuten, qmgr zu wecken, sieht, dass es nicht läuft, und startet es.
Der qmgr muss nicht bis zur Weckzeit warten, wenn eine neue E-Mail eintrifft, der Bereinigungsdienst ihn aufruft und auch nicht, bis der Masterprozess die Konfiguration abgeschlossen hat.