Проблема необходимости оповещений о разного рода событиях ощущается достаточно остро уже давно (и чем дальше, тем сильнее). Причем даже о скачивании торрента подчас хочется узнать "как только так сразу", что уж тут говорить о событиях в сети, находящиейся под Вашим контролем. На помощь мне пришли: Cacti с плагином thold и sendmail, на настройку которого я потратил приличное количество времени. Чтобы в следующий раз было немного легче я постарался задокументировать процесс настройки ниже.
Для установки плагинов в Cacti необходимо предварительно установить Plugin Architecture (уже встроен для версий, начиная с 8.8).
Для установки плагина нужно:
Для отправки email-сообщений решил использовать PHP Mailer (Cacti Settings -> Mail Services), который в свою очередь использует Sendmail.
Окончание /etc/mail/sendmail.mc:
Когда надоело перебирать все возможные варианты конфигураций решил-таки подойти более структурированно. Для начала поднял аналогичную конфигурацию не на Fedora, а на Debian и при отправке тестового email GMail стал отбивать его сообщением со следующими строками:
Оказалось, что необходимо либо разрешить менее защищённый доступ к GMail, либо настроить 2-Step Verification и сгенерить отдельный пароль для Sendmail (так и не разбирался, что сделать для того, чтобы Sendmail мог подключаться к gmail более безопасным способом).
Сгенерил отдельный пароль, и Debian стал отправлять email, но на Fedora получаю всё те же логи.
Перекомпилируем конфигурацию Sendmail, рестартуем и пробуем снова:
Сравниваем логи и путём нудных поисков находим искомые строки (первая строка с рабочего Sendmail):
Оказалось, что установка пакета cyrus-sasl-plain решила проблему, после чего я получил целую пачку email'ов, которые старательно генерились thold'ом всё то время, пока я разбирался с Sendmail :).
Для установки плагинов в Cacti необходимо предварительно установить Plugin Architecture (уже встроен для версий, начиная с 8.8).
Для установки плагина нужно:
- скачать плагин;
- распаковать в директорию cacti/plugins/ (в моём случае /usr/share/cacti/plugins/);
- в веб-интерфейсе cacti переходим в Plugin Management и устанавливаем (install), и включаем плагин (enable).
Для отправки email-сообщений решил использовать PHP Mailer (Cacti Settings -> Mail Services), который в свою очередь использует Sendmail.
Настройка
Содержимое /etc/mail/auth/client-info:AuthInfo:smtp.gmail.com "U:root" "I:user@gmail.com" "P:password"
Окончание /etc/mail/sendmail.mc:
define(`SMART_HOST',`smtp.gmail.com')dnl define(`RELAY_MAILER_ARGS', `TCP $h 587')dnl FEATURE(`authinfo',`hash -o /etc/mail/auth/client-info.db')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl MAILER(local)dnl MAILER(smtp)dnl
Запуск
cd /etc/mail/auth makemap -r hash client-info.db < client-info /etc/mail/make systemctl restart sendmail echo -e "Subject:Test\nTo:a@bas.kz\nFrom:email@gmail.com\n\nText" > ~/email /usr/sbin/sendmail a@bas.kz < ~/email
Первые проблемы
Настроив, казалось бы, всё необходимое стал получать следующие логи в /var/log/maillog:AUTH=client, available mechanisms do not fulfill requirements AUTH=client, relay=smtp.gmail.com, temporary failure, connection abort to=<a@bas.kz>, ctladdr=<apache@nms.local> (48/48), delay=00:00:01, xdelay=00:00:01, mailer=relay, pri=120625, relay=smtp.gmail.com [173.194.71.109], dsn=4.0.0, stat=Deferred: Temporary AUTH failure
Когда надоело перебирать все возможные варианты конфигураций решил-таки подойти более структурированно. Для начала поднял аналогичную конфигурацию не на Fedora, а на Debian и при отправке тестового email GMail стал отбивать его сообщением со следующими строками:
(reason: 530-5.5.1 Authentication Required. Learn more at) Please log in via your web browser and then try again. Learn more at https://support.google.com/mail/bin/answer.py?answer=78754 530-5.5.1 Authentication Required. Learn more at http://support.google.com/mail/bin/answer.py?answer=14257 Service unavailable
Оказалось, что необходимо либо разрешить менее защищённый доступ к GMail, либо настроить 2-Step Verification и сгенерить отдельный пароль для Sendmail (так и не разбирался, что сделать для того, чтобы Sendmail мог подключаться к gmail более безопасным способом).
Сгенерил отдельный пароль, и Debian стал отправлять email, но на Fedora получаю всё те же логи.
Ещё одна проблемка
Удалось разобраться с помощью включения более подробных логов на обоих машинах. Для этого правим /etc/mail/sendmail.mc: меняем 9 на 99define(`confLOG_LEVEL', `99')dnl
Перекомпилируем конфигурацию Sendmail, рестартуем и пробуем снова:
/etc/mail/make systemctl restart sendmail /usr/sbin/sendmail a@bas.kz < ~/email
Сравниваем логи и путём нудных поисков находим искомые строки (первая строка с рабочего Sendmail):
AUTH: available mech=DIGEST-MD5 CRAM-MD5 LOGIN PLAIN, allowed mech=EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN AUTH=client, relay=smtp.gmail.com, mech=LOGIN, bits=0 AUTH: available mech=DIGEST-MD5 CRAM-MD5 ANONYMOUS, allowed mech=EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN AUTH=client, relay=smtp.gmail.com, temporary failure, connection abort
Оказалось, что установка пакета cyrus-sasl-plain решила проблему, после чего я получил целую пачку email'ов, которые старательно генерились thold'ом всё то время, пока я разбирался с Sendmail :).
Полезные ссылки:
- LinuxQuestions.org: How to configure sendmail to use Gmail as SMTP server? (кратко и по делу)
- Configure sendmail to work with Gmail smtp relay (информация о SASL)
- sendmail, 4th Edition
Комментариев нет:
Отправить комментарий