Вопрос или проблема
Я использую Zenoss для мониторинга. Я давно пользуюсь его почтовым сервисом. Вдруг мой почтовый сервис в Zenoss остановился и начал показывать <class 'smtplib.SMTPServerDisconnected'> - соединение неожиданно закрыто
, и никакие письма не отправляются. Когда я запустил команду почты через CLI, письмо успешно отправляется на адрес электронной почты. Однако при выполнении скрипта Zenoss для отправки почты это не работает и возникает ошибка, как показано выше.
Мой сервер — RHEL 5.3 x86_64, с Zenoss 4.2 и почтовым сервером sendmail.
Журналы Sendmail и конфигурация электронной почты Zenoss
Apr 11 07:14:30 XXXhostnameXX sendmail[13582]: r3BBDgia013582: потерян входной канал от localhost.localdomain [127.0.0.1] к MTA после почты
Apr 11 07:14:30 XXXhostnameXX sendmail[13582]: r3BBDgia013582: from=<[email protected]>, size=146972, class=0, nrcpts=0, proto=ESMTP, daemon=MTA, relay=localhost.localdomain [127.0.0.1]
Zenoss использует базовое SMTP-соединение, так как отправка электронной почты осуществляется локальным сервером sendmail (localhost) на порту 25. Специальная конфигурация не используется.
Возможно, это таймаут на стороне клиента после команды “MAIL FROM:”.
Зная точное значение задержки ответа, можно будет получить ценную подсказку.
Можете ли вы отправить тестовое сообщение в подробном режиме?
[Это должно предоставить расшифровку SMTP-сессии]
#!/bin/sh
# -v - быть подробным (предоставить расшифровку SMTP)
# -i - 'одиночная точка' не является концом электронного письма
# -t - получить список получателей из заголовков письма
# -f - установить адрес электронной почты отправителя для "MAIL FROM:" в SMTP-сессии
/usr/sbin/sendmail -v -i -t [email protected] <<END
Subject: test
From: [email protected]
to: [email protected]
test
END
Ответ или решение
Проблема с SMTP-соединением в Zenoss, проявляющаяся ошибкой <class 'smtplib.SMTPServerDisconnected'> - Connection unexpectedly closed
, может быть вызвана несколькими факторами. Давайте рассмотрим возможные причины и способы их устранения.
1. Проверка Конфигурации Zenoss
Убедитесь, что параметры конфигурации SMTP в Zenoss указаны корректно. Проверьте файл конфигурации и убедитесь, что используются правильные значения. Конфигурация должна быть настроена на использование локального сервера sendmail через порт 25.
2. Логи Sendmail
Судя по данным из логов sendmail, вы видите сообщение: lost input channel from localhost.localdomain [127.0.0.1] to MTA after mail
. Это может указывать на проблемы при взаимодействии Zenoss с sendmail. Проверьте логи sendmail на наличие других ошибок или предупреждений, которые могут указать на проблему с настроенной доставкой почты.
3. Проблема с тайм-аутами
Как было упомянуто в обсуждении, возможно, проблема связана с превышением времени ожидания ответа от сервера. Проведите тестовое SMTP-соединение с использованием команды sendmail в режиме отладки, чтобы увидеть полный транскрипт SMTP-сессии:
#!/bin/sh
/usr/sbin/sendmail -v -i -t [email protected] <<END
Subject: test
From: [email protected]
to: [email protected]
test
END
Запустите этот скрипт и посмотрите, нет ли там каких-либо тайм-аутов или других указаний на возникающие проблемы.
4. Ограничения на Уровне Системы
Проверьте параметры конфигурации SELinux или iptables на наличие правил, которые могут блокировать соединение Zenoss с sendmail. Если SELinux включён, попробуйте временно отключить его:
setenforce 0
Если это решает проблему, вам потребуется внести изменения в политику SELinux, чтобы разрешить доступ к sendmail.
5. Обновление Zenoss и Sendmail
Если вы используете Zenoss 4.2 и RHEL 5.3, ваше программное обеспечение может быть устаревшим. Рассмотрите возможность обновления до более новой версии Zenoss и sendmail, если это возможно, чтобы устранить возможные баги и улучшить стабильность системы.
6. Проверка Возможного Конфликта
Иногда другая служба или приложение может конфликтовать с sendmail. Убедитесь, что нет других почтовых серверов, работающих на том же порту, что и sendmail, и что служба sendmail запущена:
service sendmail status
И, если необходимо, перезапустите sendmail:
service sendmail restart
Заключение
Если после выполнения всех вышеперечисленных действий проблема сохраняется, вам может потребоваться более детальная диагностика, включая анализ сетевых пакетов с помощью таких инструментов, как tcpdump, для отслеживания и проверки SMTP-трафика. Это может помочь вам выявить конкретные причины закрытия соединения. Обязательно сохраните всю информацию о логах и ошибках, которые вы нашли, так как это может быть полезным для более глубокого анализа проблемы.