web-dev-qa-db-ja.com

Mailmanは送信された各メッセージのIPアドレスをログに記録できますか?

各メッセージの送信者のIPアドレスをログに記録するようにMailmanを構成することは可能ですか?

(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行目にあるようです。ただし、ここでメッセージ送信者のIPアドレスを変数として使用できるようにするのに十分なPython)はわかりません。

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,
                      })  
2
richardkmiller

ヘイ。 SMTPDirectが行うことは

Local SMTP direct drop-off.
This module delivers messages via SMTP to a locally specified daemon.

送信者のIPに関する情報はありません。つまり、これは少なくとも私があなたの質問を理解する方法であり、あなたが望むものではありません。

別の方法をお勧めします。設定に応じて、元のメールの送信先となるメールボックスを「複製」します。そこからIPを抽出します。これを行うには、シェルツールまたはpythonを使用できます。

IPは、Mailmanが処理しているメールに直接結合されていませんが、IPを検索できます。

そうでなければ、私はあなたがmailmanにパッチを当てなければならないのではないかと心配しています。これは厄介なコードです(imo)

1
jojoo