mirror of
https://git.proxmox.com/git/pmg-log-tracker
synced 2025-04-28 14:42:46 +00:00

Initial before queue filter support. Requires a patch to pmg-api to add the pmg-smtp-filter ID to the replies on a reject to correctly match the pmg-smtp-filter to the smtpd. Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com> Signed-off-by: Wolfgang Bumiller <w.bumiller@proxmox.com>
41 lines
1.7 KiB
Plaintext
41 lines
1.7 KiB
Plaintext
The pmg-log-tracker extracts information out of the syslog to match all entries
|
|
related to a single mail. It does so by using the PID of 'smtpd' entries in the
|
|
log as key for the SEntry structs. The QID, an ID consisting of at least 2 all
|
|
upper case hex digits, is used for both QEntry structs and FEntry structs.
|
|
|
|
As a rule of thumb, SEntrys are used wherever the services 'postscreen' and
|
|
'smtpd' are involved. QEntrys on the other hand are only used when a queue is
|
|
involved (e.g. after-queue filtering passing the postscreen checks,
|
|
before-queue filtering when the mail is 'accepted'). FEntrys are used whenever
|
|
the filter (pmg-smtp-filter) is involved.
|
|
|
|
The typical flow of a mail (after-queue):
|
|
|
|
1. postscreen (NOQUEUE -> mail finished)
|
|
2. smtpd (pid matching)
|
|
3. cleanup -> qmgr (mail in queue, QID matching)
|
|
4. pmg-smtp-filter (rule system, accept/block, long (Q)ID matching)
|
|
5. lmtp/smtp/local/error (QID matching, filter ID matching in lmtp)
|
|
6. qmgr ('removed')
|
|
7. smtpd ('disconnected from')
|
|
|
|
Both 6 and 7 are required before the mail can be printed completely.
|
|
6 and 7 can be logged in arbitrary order.
|
|
|
|
The typical flow of a mail (before-queue):
|
|
|
|
1. postscreen (NOQUEUE -> mail finished)
|
|
2. smtpd 1 (pid matching)
|
|
3. pmg-smtp-filter (rule system, accept/block, long (Q)ID matching)
|
|
- on accept match the QID
|
|
4. smtpd 2 (pid matching)
|
|
5. (optional, only on 'accept') cleanup -> qmgr (mail in queue, QID matching)
|
|
6. (optional, only on 'accept') smtp (QID matching)
|
|
7. (optional, only on 'accept') qmgr ('removed')
|
|
8. smtpd 2 ('disconnect from')
|
|
9. smtpd 1 (proxy-accept/proxy-reject, filter (Q)ID matching)
|
|
10. smtpd 1 ('disconnect from')
|
|
|
|
7, 8 and 10 are required before the mail can be printed completely.
|
|
7, 8 and 10 can be logged in arbitrary order.
|