SendMail настройка · 2 min read · Dec 25, 2025

Настройка SendMail для работы в качестве Smarthost и изменения адреса отправителя

Настройка SendMail для работы в качестве Smarthost и изменения адреса отправителя

Этот учебник объясняет, как настроить сервер sendmail для пересылки всех писем, сгенерированных с localhost, на другой SMTP-сервер для отправки писем удалённым получателям. Также объясняется, как изменить адрес отправителя с [email protected] на [email protected].

Пример сценария: У вас есть сервер в производственной среде, который не настроен на пересылку писем внешним образом, но на этом сервере работает приложение, которое отправляет свои логи на указанный адрес электронной почты о его статусе и в случае каких-либо сбоев в работе сервиса. Поскольку sendmail работает локально на имени localhost.localdomain, он пытается переслать письмо с [email protected] на удалённый SMTP-сервер, что будет отклонено по причине того, что localhost.localdomain разрешается в недопустимый IP. Чтобы это преодолеть, мы должны изменить адрес отправителя с [email protected] на [email protected], чтобы другой SMTP-сервер переслал письмо с [email protected] на [email protected] или любой другой адрес, на который вы хотите отправить письмо о статусе сервиса.

ПРИМЕЧАНИЕ: Определённые части этого учебника применимы только к системам на базе Redhat, но в целом процедура применима ко всем серверам sendmail.

IP SMARTHOST : 10.1.1.50
IP SMTP HOST : 10.1.1.10

Проверка установленных RPM:

Сначала необходимо установить RPM-пакеты Sendmail. По умолчанию Sendmail устанавливается вместе с установкой системы.

Проверьте установленные RPM-пакеты sendmail:

root@nerdplanet# rpm -q sendmail sendmail-cf

Эти два пакета должны быть перечислены как установленные:

sendmail-8.xx
sendmail-cf-8.xx

Если они ещё не установлены, установите их.

Установка RPM-пакетов

root@nerdplanet# yum install sendmail sendmail-cf

Это должно установить их в вашу систему Linux.

После установки необходимо убедиться, что сервер запущен и автоматически запускается при перезагрузке.

root@nerdplanet# chkconfig sendmail on 
root@nerdplanet# service sendmail start

Теперь сервер работает.

Сначала добавьте IP-адрес удалённого сервера и его доменное имя в /etc/hosts

vi /etc/hosts
10.1.1.10    smtp.example.com

Вам не нужно выполнять вышеуказанный шаг, если ваш локальный DNS может разрешить доменное имя в IP-адрес SMTP-сервера, который настроен для пересылки почты.

Редактирование конфигурационного файла Sendmail для пересылки писем

vi /etc/mail/sendmail.mc

Пересылка писем на smarthost

dnl # define(`SMART_HOST',`smtp.example.net') 

Найдите строку, содержащую вышеуказанную запись, и замените её на адрес вашего SMTP-сервера.

define(`SMART_HOST',`smtp.example.com')

Затем сохраните файл.

Для изменения адреса отправителя писем создайте файл genericstable.

vi /etc/mail/genericstable

В файле Generics table введите следующие строки:

root    [email protected]
mohan   [email protected]

Вышеуказанные строки означают, что если какие-либо письма отправлены от root, они будут маскироваться и появляться как отправленные с [email protected] вместо [email protected], а если какое-либо письмо отправлено пользователем mohan, оно будет появляться как отправленное с [email protected] вместо [email protected]

Затем сохраните файл.

Включение функций в конфигурационном файле sendmail.

vi /etc/mail/sendmail.mc

Добавьте эти строки для включения функций:

FEATURE(masquerade_envelope)dnl
FEATURE(`genericstable')dnl
GENERICS_DOMAIN(`localhost.localdomain')dnl

Затем выполните:

make -C /etc/mail

Это должно скомпилировать все файлы в каталоге /etc/mail и обновить изменения.

После этого перезапустите службу sendmail.

root@nerdplanet# service sendmail restart

Вот и всё, вы настроили sendmail для работы в качестве smarthost.

Настройка вашего SMTP-сервера для принятия писем от Smarthosts:


ПРИМЕЧАНИЕ: Эта процедура применима только если удалённый живой SMTP-сервер является сервером sendmail, что верно в этом сценарии. Для других SMTP-серверов обратитесь к их документации.

Предположения: Живой SMTP-сервер уже использует FEATURE (‘access_db’..

Отредактируйте файл доступа на живом SMTP-сервере, чтобы принимать письма от смарт-хоста.

vi /etc/mail/access
connect:10.1.1.50    RELAY
cd /etc/mail

Пересоздайте файл базы данных Access.

/usr/sbin/makemap hash access < access

Перезапустите службу sendmail.

root@smtp# service sendmail restart

Вот и всё; удалённый SMTP-сервер будет принимать письма от смарт-хоста.

Надеюсь, этот учебник будет полезен кому-то. Пожалуйста, оставьте ваши комментарии.

Оригинальная ссылка: Этот учебник также доступен на http://www.nerdplanet.co.uk.

С уважением!

Мохан.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.