记录到单独文件 (maillog_file) 时不同的 Postfix 日志文件格式

记录到单独文件 (maillog_file) 时不同的 Postfix 日志文件格式

为了将邮件日志与一般系统日志分开,我添加了此行到/etc/postfix/main.cf

maillog_file = /var/log/postfix.log

正如预期的那样,创建了一个文件,并且中/var/log/postfix.log不再有条目。不幸的是,这似乎也会改变日志条目的内容。这是我在 中得到的结果(此处更改了我的原始域名)postfixvar/log/syslogpostfix.logexample.com

May 23 17:33:15 example postfix/qmgr[662299]: E7DB742646: from=<[email protected]>, size=549252, nrcpt=1 (queue active)
May 23 17:33:15 example postfix/qmgr[662299]: D7DA646E85: removed

当我将其改回来时(为了确保万无一失,我来回改了好几次),并再次发送同一封电子邮件时,我收到了此信息syslog

May 23 17:33:52 example2020 postfix/smtp[664151]: DE7EA4265D: to=<[email protected]>, relay=mail.example.com[11.111.11.111]:25, delay=1.7, delays=0.07/0.02/0.11/1.5, dsn=2.0.0,     status=sent (250 2.0.0 Ok: queued as 1BC7874B3A)
May 23 17:33:52 example2020 postfix/qmgr[664141]: DE7EA4265D: removed

显然,它们之间存在很多差异。首先,日期后给出了不同的服务器名称(example在 中设置/etc/mailnameexample2020在 中指定/etc/hostname)。其次,只postfix/qmgr记录了条目,而不记录包含附加信息的条目。对于不再接收这些条目的 也是postfix/smtp如此。var/log/mail.log

所以,这里有两个问题......

(1)为什么当我指定 时postfixmail_version = 3.4.13)会记录不同的信息(不再) ?postfix/smtpmaillog_file

(2)有什么想法可以告诉postfix我我想要postfix/smtp回我的信息吗?

Postfix 配置

$ postconf -n

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
bounce_queue_lifetime = 24h
compatibility_level = 2
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mailbox_size_limit = 0
maillog_file = /var/log/postfix.log   # This is the trouble maker
maximal_queue_lifetime = 36h
message_size_limit = 67108864
milter_default_action = accept
milter_protocol = 6
mydestination = example2020   # Host name replaced by "example"
myhostname = example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
non_smtpd_milters = inet:localhost:8892
readme_directory = no
recipient_delimiter = +
relayhost =
sender_canonical_maps = hash:/etc/postfix/senders
smtp_bind_address = 11.111.11.111
smtp_bind_address6 = 2a02:xxxx:0:xxxx::xx
smtp_destination_concurrency_limit = 3
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_cert_file = /var/www/ssl/example.cert
smtp_tls_key_file = /var/www/ssl/example.key
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_milters = inet:localhost:8892  # This one is for OpenDKIM
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sasl_security_options = noanonymous
smtpd_tls_cert_file = /var/www/ssl/example.cert
smtpd_tls_exclude_ciphers = ECDHE-RSA-RC4-SHA
smtpd_tls_key_file = /var/www/ssl/example.key
smtpd_tls_mandatory_ciphers = high
smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-RC4-SHA
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
tls_high_cipherlist = EDH+CAMELLIA:EDH+aRSA:EECDH+aRSA+AESGCM:EECDH+aRSA+SHA384:EECDH+aRSA+SHA256:EECDH:+CAMELLIA256:+AES256:+CAMELLIA128:+AES128:+SSLv3:!aNULL:!eNULL:!LOW:!3DES:!MD5:!EXP:!PSK:!DSS:!RC4:!SEED:!ECDSA:CAMELLIA256-SHA:AES256-SHA:CAMELLIA128-SHA:AES128-SHA
tls_ssl_options = NO_COMPRESSION
virtual_alias_maps = hash:/etc/postfix/virtual


$ postconf -M

smtp       inet  n       -       y       -       -       smtpd
pickup     unix  n       -       y       60      1       pickup
cleanup    unix  n       -       y       -       0       cleanup
qmgr       unix  n       -       n       300     1       qmgr
tlsmgr     unix  -       -       y       1000?   1       tlsmgr
rewrite    unix  -       -       y       -       -       trivial-rewrite
bounce     unix  -       -       y       -       0       bounce
defer      unix  -       -       y       -       0       bounce
trace      unix  -       -       y       -       0       bounce
verify     unix  -       -       y       -       1       verify
flush      unix  n       -       y       1000?   0       flush
proxymap   unix  -       -       n       -       -       proxymap
proxywrite unix  -       -       n       -       1       proxymap
smtp       unix  -       -       y       -       -       smtp
relay      unix  -       -       y       -       -       smtp -o syslog_name=postfix/$service_name
showq      unix  n       -       y       -       -       showq
error      unix  -       -       y       -       -       error
retry      unix  -       -       y       -       -       error
discard    unix  -       -       y       -       -       discard
local      unix  -       n       n       -       -       local
virtual    unix  -       n       n       -       -       virtual
lmtp       unix  -       -       y       -       -       lmtp
anvil      unix  -       -       y       -       1       anvil
scache     unix  -       -       y       -       1       scache
postlog    unix-dgram n  -       n       -       1       postlogd
maildrop   unix  -       n       n       -       -       pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp       unix  -       n       n       -       -       pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail     unix  -       n       n       -       -       pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp      unix  -       n       n       -       -       pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n       n       -       2       pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman    unix  -       n       n       -       -       pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}

答案1

为了将邮件日志与一般系统日志分开,我在 /etc/postfix/main.cf 中添加了此行

正如@anx 所评论的那样,这不是最好的方法,强烈建议将日志格式和决策留给系统日志守护进程

供您参考日志服务已经从套接字文件收集了 postfix 日志/var/spool/postfix/dev/log(参见内部/etc/rsyslog.d/postfix.conf),这仍然是最干净的方式。

看看你的/etc/rsyslog.conf,一定有一行像这样:

*.*;mail,auth,authpriv.none     -/var/log/syslog

为了告诉rsyslogd不要在里面写入与邮件相关的日志条目/var/log/syslog,将其更改为(注意。没有任何):

*.*;mail.none,auth,authpriv.none        -/var/log/syslog

已经有一行告诉它将所有与邮件相关的内容记录到/var/log/mail.log(如果需要,可以将其更改为任何文件)中,因此您不需要编辑 postfix 配置文件:

mail.*              -/var/log/mail.log

回答您的问题:

(1)为什么当我指定 maillog_file 时,postfix(mail_version = 3.4.13)会记录不同的信息(不再有 postfix/smtp)?

你的 master.cf 告诉我们你正在使用 postfixchrooted 模式.但你的管理者守护进程没有被 chrooted,因此它基本上可以写入任何日志文件,不像你的简体中文:守护进程。

(2) 有什么想法可以告诉 postfix 我想​​要我的 postfix/smtp 信息吗?

您的信息并没有消失,但您的许多守护进程无法打破 chroot,因此它们无法按照您的意图直接写入/var/log/postfix.log。一种选择是取消 chroot,方法是切换chroot列至n在您的 master.cf 中,但是同样,没有理智的人会推荐这样做。

结论:你最好、最安全的选择是调整你的日志服务配置如前所述。

相关内容