是否可以配置 Mailman 来记录每条消息发件人的 IP 地址?
看来正确的配置指令(来自 Defaults.py)是 SMTP_LOG_SUCCESS。它记录到 /var/log/mailman/post:
SMTP_LOG_SUCCESS = (
'post',
'post to %(listname)s from %(sender)s, size=%(size)d, message-id=%(msg_message-id)s, success')
我将此指令复制到 mm_cfg.py,尝试添加 %(ip) 和 %(remote)(只是猜测),然后重新启动 Mailman,但没有作用。
可用变量的字典似乎位于 Mailman/Handlers/SMTPDirect.py 的第 173-180 行。但是,我对 Python 的了解不够深入,无法在此处将消息发件人的 IP 地址用作变量。
d = MsgSafeDict(msg, {'time' : t1-t0,
# BAW: Urg. This seems inefficient.
'size' : len(msg.as_string()),
'#recips' : len(recips),
'#refused': len(refused),
'listname': mlist.internal_name(),
'sender' : origsender,
})
答案1
嘿。SMTPDirect 的作用是
Local SMTP direct drop-off.
This module delivers messages via SMTP to a locally specified daemon.
没有关于发件人 IP 的信息。所以,至少我是这样理解你的问题的,不是你想要的。
我建议另一种方法:根据您的设置,“克隆”原始邮件发送到的邮箱。从那里提取 IP,您可以使用 shell 工具或 python 来执行此操作。
IP 与 Mailman 正在处理的邮件没有直接关系,但您可以查找 IP。
否则我担心你必须修补 mailman,这是一段令人讨厌的代码(在我看来)