Mailman 可以记录发送的每封邮件的 IP 地址吗?

Mailman 可以记录发送的每封邮件的 IP 地址吗?

是否可以配置 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,这是一段令人讨厌的代码(在我看来)

相关内容