Можно ли настроить 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,
})
привет. Что делает 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)