среда, 11 марта 2015 г.

Отсылка почтовых сообщений при помощи nullmailer с использованием yandex.ru

Исходные данные: 
Xubuntu 14.04 (64 разряда, сервер, должно подойти ко всем вариантам установки).

Нужно отсылать диагностику по почте. Ставить для этого скромного занятия postfix или что-то подобное -- из пушки по воробьям. Пробуем прикрутить nullmailer, как самый простой MTA . 

Новый ящик.

Сначала заводим новый почтовый ящик с каким-либо  корявым-прикорявым логином, чтоб ни кому в голову оно само не запало. типа gy76545ghh@yandex.ru, пароль примерно такой же запоминающийся. Настраиваем Thanderbird и проверяем вновь созданный ящик на предмет настроек и пр. Видим, что нам нужен smtp.yandex.ru с портом 465 (ssl/tls).  

Ставим и настраиваем nullmailer. 

Собственно установка  sudo apt-get install nullmailer. На вопросы установочного скрипта можно ввести любую непустую строку, потом поправим как должно быть. Никакие mailutils не ставим. Будем пользовать sendmail для отсылки почты.  Теперь в файл /etc/nullmailer/remotes  пишем 
smtp.yandex.ru  smtp --port=465 --user=gy76545ghh@yandex.ru --pass=пароль --ssl
Пробуем отослать пробное письмо ls | sendmail -f gy76545ghh@yandex.ru destination@addres.dom Должны его получить, и получить соответствующие записи /var/log/mail.log. Вот собственно таким способом, таская с собой -f gy76545ghh@yandex.ru и будем отсылать письма. Если не указывать исходящий адрес, Яндекс просто откажется принимать сообщение. В принципе можно подсмотреть вот тут и -f с собой не таскать... Не совсем корректно, но лучше не придумалось  - вот вся рецептура

# 1) Rename the original sendmail binary:
$ mv /usr/sbin/sendmail /usr/sbin/sendmail-bin

# 2) Create and edit a script called sendmail:
$ touch /usr/sbin/sendmail
$ chmod 755 /usr/sbin/sendmail
Edit the sendmail script file and paste this content:

#!/bin/bash

/usr/sbin/sendmail-bin  -f  `cat /etc/nullmailer/forced-from`  $@ </dev/stdin

Что еще полезно сделать. В файле /etc/nullmailer/adminaddr указать тот же gy76545ghh@yandex.ru. В результате вся рутовая и пр. диагностическая почта будет идти "от себя к себе". Яндекс не ругается и позволяет сделать правила пересылки по полю "от кого". Правила пересылки достаточно кривые, но работают.

Итого.

Из плюсов. Усилий по установке и настройке самый минимум. Можно даже не иметь нормального DNS-имени для хоста, все едино работать будет. Минусы. Алиасов нет, отсылка только на один адрес за раз, если что-то чуть-чуть отличается от тривиального, нужно городить свой скрипт, даже простой mdadm в лет не заработал. На очереди как раз задача по одолению оного mdadm (или установка postfix :-)).

Добавлено 20150804

Вместо переименования "родного" sendmail можно положить "свой" скрипт в /usr/local/sbin/. Пока проверено под Гентой, должно работать и под *buntu.

Добавлено 20190520

Несколько рабочих конфиг-файлов

/etc/nullmailer/adminaddr - мой обычный адрес на гмыле.
/etc/nullmailer/defaultdomain - файл нулевой длины
/etc/nullmailer/forced-from - содержит gy76545ghh@yandex.ru
/etc/nullmailer/me - содержит gy76545ghh@yandex.ru

/etc/nullmailer/remotes содержит  строку
smtp.yandex.ru  smtp --port=465 --user=gy76545ghh@yandex.ru --pass=gy76545ghhpassword --ssl

/etc/mailname - имя машины типа my-serv

фрагмент /etc/mdadm/mdadm.conf
                                                                                
# instruct the monitoring daemon where to send mail alerts                      
MAILADDR viktorkuzmin@гмыл
MAILFROM gy76545ghh@yandex.ru

  
фрагмент /etc/cron.d/local

SHELL=/bin/bash                                                                 
MAILFROM=gy76545ghh@yandex.ru
MAILTO=viktorkuzmin@гмыл
LANG=en_US.UTF-8

/usr/sbin/sendmail (исполняемый)

#! /bin/bash

/usr/sbin/sendmail.bin -f  `cat /etc/nullmailer/forced-from`  $@ </dev/stdin

Неожиданное продолжение от 20210204

3 комментария:

  1. Этот комментарий был удален автором.

    ОтветитьУдалить
  2. Несмотря на удаленный вопрос...
    Умнее трюка с переименованием я ничего предложить не могу. Очень не нравится, но работает.

    ОтветитьУдалить