为了将邮件日志与一般系统日志分开,我添加了此行到/etc/postfix/main.cf
maillog_file = /var/log/postfix.log
正如预期的那样,创建了一个文件,并且中/var/log/postfix.log
不再有条目。不幸的是,这似乎也会改变日志条目的内容。这是我在 中得到的结果(此处更改了我的原始域名)postfix
var/log/syslog
postfix.log
example.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/mailname
,example2020
在 中指定/etc/hostname
)。其次,只postfix/qmgr
记录了条目,而不记录包含附加信息的条目。对于不再接收这些条目的 也是postfix/smtp
如此。var/log/mail.log
所以,这里有两个问题......
(1)为什么当我指定 时postfix
(mail_version = 3.4.13
)会记录不同的信息(不再) ?postfix/smtp
maillog_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 中,但是同样,没有理智的人会推荐这样做。
结论:你最好、最安全的选择是调整你的日志服务配置如前所述。