Задача
У меня есть почтовый сервачок поднятый скриптами iredmail и мне нужно разрешить хостам из локальной сети посылать почту без авторизации.
Решение
Разрешаем postfix отправлять почту из локальной сети без авторизации
На почтовом сервере postfix редактируем файлик /etc/postfix/main.cf и в параметре smtpd_sender_restrictions добавляем значение:
smtpd_sender_restrictions = check_sender_access pcre:/etc/postfix/sender_access.pcre, ...
А потом создаем файлик /etc/postfix/sender_access.pcre в котором прописываем правило:
/^192\.168\.1\./ OK
И перезапускаем postfix:
sudo service postfix restart
На хосте локальной сети с которого мы будем отправлять почту
sudo apt-get install postfix mailutils
При установке указываем тип хоста - Satellite system и в качестве почтового домена указываем свой домен.
В файлике /etc/postfix/main.cf прописываем путь к файлу /etc/postfix/generic, в котором будут храниться соответствия имен пользователей адресам почты, которые попадут в поле from и relayhost. Это нужно для того, чтобы вышестоящий релей без проблем пропустил письма у которых в после @ будет стоять, вероятно, несуществующий домен машины с которой мы отсылаем почту.
smtp_generic_maps = hash:/etc/postfix/generic relayhost = mx.yourdomain.com
Файлик /etc/postfix/generic заполняем так:
echo 'www-data yourusername@yourdomain.com' >> /etc/postfix/generic
Потом включаем его в базу настроек postfix:
postmap /etc/postfix/generic
Файлик /etc/aliases хранит соответствия локальных пользователей и адресов получателей/отправителей. То есть, например, без этого файлика сервис mdadm, увидев, что развалился массив захочет оповестить пользователя root от имени root и подставит в поле from и в поле to адрес root@localhost.localdomain. В результате письмо никуда не дойдет. Поэтому редактируем /etc/aliases и пишем там так:
login:mailaddr@domain
А затем оповещаем postfix о наличии новых алиасов:
newaliases
и рестартуем postfix
service postfix restart
Discussion