Изменение адреса отправителя в sendmail
13.05.2010
На многих почтовых серверах в целях безопасности запрещена пересылка писем от не авторизованных пользователей. Т.е. если мы хотим получать письма от рутов наших любимых серверов, в поле отправителя будет стоять что-то типа root@hostname.domain.ru и письмо скорее всего не дойдет до адресата. А нам во что бы то ни стало надо это письмо обязательно получить (хотя и не обязательно мы его будем читать но получить надо;)) Единственный выход в данной ситуации — это изменить адрес отправителя на существующий адрес на почтовом сервере, например Vasily.Pupkin@domain.ru.
Конечно можно не заморачиваться с sendmail и использовать любой другой mail transfer agent либо почтовый клиент, в котором можно прописать все что угодно, но есть софт, который упорно использует только sendmail и ничего более. Вот для таких случаев и написана данная инструкция.
Итак:
1) Не забываем прописать в /etc/hosts доменное имя нашего сервера и адрес почтового сервера (если не используется DNS):
192.168.1.2 hostname hostname.domain.ru
192.168.1.25 mailhost
2) Создаем так называемую genericstable database для сопоставления локальных имен пользователей существующим на почтовом сервере:
# cd /etc/mail
# cat > genericstable
root Vasily.Pupkin@domain.ru
vasya Vasily.Pupkin@domain.ru
vova Vladimir.Putin@domain.ru
dima Dmitriy.Medvedev@domain.ru
Ctrl-D
# makemap hash genericstable < genericstable
3) Останавливаем демон sendmail
4) Меняем конфигурационный файл sendmail.cf следующим способом:
Добавляем в файл /etc/mail/cf/cf/sendmail.mc (если у Вас стандартная конфигурация sendmail) следующие строчки:
FEATURE (‘genericstable’)dnl
GENERICS_DOMAIN(‘hostname.domain.ru’)dnl
Где ‘hostname.domain.ru’ — доменное имя Вашего сервера (то же, что и в /etc/hosts)
Эти строчки должны стоять перед описанием опций MAILER
Генерируем файл sendmail.cf :
# cd /etc/mail/cf/cf
# m4 /etc/mail/cf/m4/cf.m4 sendmail.mc > sendmail.cf
# cp sendmail.cf /etc/mail
5) Указываем в файле /etc/mail/aliases адрес на кого переправлять рутовую почту (если кончено вы хотите получать всю почту пользователя root):
root: Vladimir.Putin@domain.ru
Применяем изменения:
# newaliases
6) Запускаем демон sendmail.
В результате всех действий почта, исходящая от локальных пользователей root, vasya, vova, dima будет отправляться с данного сервера от имени их реальных почтовых адресов, а вся почта направленная на рута будет перенаправляться на ящик Vladimir.Putin@domain.ru
20.05.2010 в 15:33
Как вариант — использовать безусловный маскарадинг для всех =)
dnl Отсылать всё на наш внешний релей, который согласен
dnl принимать почту от любых юзеров в нашем домене
define(`SMART_HOST’, `mx.domain.ru’)
MASQUERADE_AS(`domain.ru’)
MASQUERADE_DOMAIN(`domain.ru’)
FEATURE(`masquerade_envelope’)
FEATURE(`masquerade_entire_domain’)