Страницы

Sendmail для работы с GMail

Проблема необходимости оповещений о разного рода событиях ощущается достаточно остро уже давно (и чем дальше, тем сильнее). Причем даже о скачивании торрента подчас хочется узнать "как только так сразу", что уж тут говорить о событиях в сети, находящиейся под Вашим контролем. На помощь мне пришли: Cacti с плагином thold и sendmail, на настройку которого я потратил приличное количество времени. Чтобы в следующий раз было немного легче я постарался задокументировать процесс настройки ниже.

Для установки плагинов в Cacti необходимо предварительно установить Plugin Architecture (уже встроен для версий, начиная с 8.8).

Для установки плагина нужно:
  • скачать плагин;
  • распаковать в директорию cacti/plugins/ (в моём случае /usr/share/cacti/plugins/);
  • в веб-интерфейсе cacti переходим в Plugin Management и устанавливаем (install), и включаем плагин (enable).
Проделываем данные операции с плагинами settings и thold.

Для отправки 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 на 99
define(`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 :).


Полезные ссылки:



Комментариев нет:

Отправить комментарий