На многих почтовых серверах в целях безопасности запрещена пересылка писем от не авторизованных пользователей.  Т.е. если мы хотим получать письма от рутов наших любимых серверов, в поле отправителя будет стоять что-то типа 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

Один комментарий на запись “Изменение адреса отправителя в sendmail”

  1. Ameiji пишет:

    Как вариант — использовать безусловный маскарадинг для всех =)

    dnl Отсылать всё на наш внешний релей, который согласен
    dnl принимать почту от любых юзеров в нашем домене
    define(`SMART_HOST’, `mx.domain.ru’)

    MASQUERADE_AS(`domain.ru’)
    MASQUERADE_DOMAIN(`domain.ru’)

    FEATURE(`masquerade_envelope’)
    FEATURE(`masquerade_entire_domain’)