mirror of
https://git.proxmox.com/git/pmg-log-tracker
synced 2025-04-28 13:03:18 +00:00
![]() The compatibility code was added to the new rfc3339 code path temporarily so that the old code path would not be changed before the PMG 8 release. Now move it to the old time format code to make sure the rfc3339 code path works as expected. Since we have all the information we need (year, month, day, hours, minutes, seconds, timezone), there's no need for a workaround in this code path. As a side effect of parsing the time format `YYYY-MM-DD HH:MM:SS` in localtime, it's now possible to parse an rfc3339 compliant format (except for fractional seconds). The change needs to be accompanied by one in pmg-api MailTracker.pmg to keep the time displayed in the GUI the same for the old time format, and correct for the new rfc3339 format. Signed-off-by: Mira Limbeck <m.limbeck@proxmox.com> |
||
---|---|---|
.cargo | ||
debian | ||
src | ||
tests | ||
.gitignore | ||
Cargo.toml | ||
Makefile | ||
README | ||
rustfmt.toml |
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.