Иногда при отладке SMTP стандартного почтового журнала недостаточно, и мне нужно увидеть полный сеанс SMTP. В postfix я добавляю проблемный IP-адрес в «debug_peer_list», что позволяет вести журнал сеанса и другую отладочную информацию только для этого IP-адреса.
В exim'е есть подобное? Я нашел только ссылки на «запуск exim в режиме отладки», который, по-видимому, вызывает регистрацию ВСЕХ сеансов, что, как я боюсь, быстро запишет тонны ненужных журналов, вызовет интенсивный дисковый ввод-вывод и затруднит поиск рассматриваемой транзакции
TL; DR: Как лучше всего получить полный журнал транзакций SMTP с определенного IP-адреса (или адреса отправителя)?
Я запускаю exim 4.80 (сервер cpanel).
Вы можете легко просмотреть команды, полученные от удаленной системы, с помощью нескольких дополнений ACL:
# Global hosts setting, list of IP addresses you want to see SMTP commands
hostlist debug_hosts = xxx.xxx.xxx.xxx : yyy.yyy.yyy.yyy
# early in acl_smtp_helo
warn hosts = +debug_hosts
log_write = DEBUG: $smtp_command
# early in acl_smtp_mail
warn hosts = +debug_hosts
log_write = DEBUG: $smtp_command
# early in acl_smtp_rcpt
warn hosts = +debug_hosts
log_write = DEBUG: $smtp_command
Но если вы хотите видеть в журналах, что говорит ваша сторона, это невозможно внутри exim. Затем ваши возможности ограничиваются любыми системными инструментами сетевой отладки, такими как tcpdump, tshark или (мой любимый) ngrep.
Например, если у вас есть клиент, который жалуется, что не может отправлять почту через ваш сервер. Вот простая запись, показывающая, почему они не могут отправить:
# ngrep -q port 25 host 208.54.85.254
<snip>
T 208.54.85.254:15084 -> 208.89.138.22:25 [AP]
AUTH PLAIN kkvdsoirDSAasdfrASDF4swSD23DAGAG6893Mgss==..
T 208.89.138.22:25 -> 208.54.85.254:15084 [AP]
535 Incorrect authentication data..
Я надеюсь, что один из них окажется для вас полезным.
Возможно, это не то, что вам нужно, но wirehark / tshark отлично подходит для этого. В командной строке:
tshark -w exim.pcap -i <interface> host <target IP>
Затем откройте файл в Wireshark, и вы сможете просмотреть всю беседу SMTP на досуге: щелкните правой кнопкой мыши один соответствующий пакет и выберите «Просмотреть диалог TCP».
Если вы хотите увидеть, как это происходит, просто опустите -w
аргумент из приведенного выше, хотя это может быть довольно спамом для больших писем.
ACL debug
для этого может быть полезен спецификатор элемента управления, например вы можете использовать тот же подход, что и в ответ выше но используя
control = debug/opts=+all
вместо того logwrite
. Обратите внимание, что вывод идет в debuglog
файл в каталоге журнала по умолчанию, т.е. что-то вроде /var/log/exim4/debuglog
.
Я не думаю, что у меня такая же проблема, но выполнение транзакции SMTP самостоятельно - полезный инструмент отладки.
Например, если вы должны получать почту SMTP от хоста mysender.example.com, 93.184.216.34, с адресом, размещенным вашим MTA (postmaster@yoursmtp.com) на какой-то внешний адрес (eg@example.com) это будет выглядеть так - вводите каждую строку в интерактивном режиме, вы увидите, что результат довольно подробный:
exim -bhc 93.184.216.34
EHLO mysender.example.com
MAIL FROM:<postmaster@yoursmtp.com>
RCPT TO:<eg@example.com>
DATA
.
Есть и другие варианты, которые людям, возможно, придется использовать в зависимости от их настроек, но это работает для меня. С удовольствием принимаю исправления от людей, которые говорят на SMTP / Exim более свободно.
[Взято из https://github.com/Exim/exim/wiki/TroubleShooting]