Настройка
В данной статье мы не будем рассматривать установку Postfix, так как данный сервер легко устанавливается под большинство дистрибутивов, и вы можете найти большое количество статей, посвященных данному действию.
/etc/postfix/main.cf
Как должно быть понятно из названия, это основной конфигурационный файл Postfix.
Совет: Команда ниже покажет вам все конфигурационные директивы, значения которых отличаются от дефолтных:
postconf -n
Так как на шлюзе требуется только пересылка почты, отключаем локальную доставку сообщений (Замечание: пустое значение конфигурациооной директивы означает её отключение):
mydestination = local_recipient_maps = local_transport = error:local mail delivery is disabled
Установите директиву myorigin в значение домена, на который пересылается почта:
myorigin = example.com
Директива mynetworks = определите сети, которым разрешено выполнять пересылку через данный сервер. Обычно сюда включают только внутреннюю локальную сеть, или вообще только IP внутреннего почтового сервера:
mynetworks = 127.0.0.0/8, 172.16.42.0/24
Данная секция предотвращает прием сообщений для адресов вида [email protected] to match. Мы явно определим домены, для которых необходимо принимать почту в директиве relay_domains ниже.
parent_domain_matches_subdomains = debug_peer_list, smtpd_access_maps
relay_domains = в данной директиве определяем домены, для которых необходимо принимать почту.
relay_domains = example1.com, example2.com, subdomain.example.com
smtpd_recipient_restrictions = контролируем действия сервера после команды RCPT TO.
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
transport_maps = указываем связь между доменами и SMTP серверами, на которые будет пересылаться почта.
transport_maps = hash:/etc/postfix/transport
relay_recipient_maps = указатель на файл, который будет содержать спискок адресов электронной почты, для которых Postfix будет принимать сообщения.
relay_recipient_maps = hash:/etc/postfix/relay_recipients
show_user_unknown_table_name = в установленном значении no возвращает сообщение “User unknown” если адрес электронной почты не найден. Используется в связке с relay_recipient_maps.
show_user_unknown_table_name = no
Хотя локальная доставка почты отлючена, почтовый шлюз должен принимать почты для адресов postmaster и abuse. Для этого определите виртуальные алиасы.
virtual_alias_maps = hash:/etc/postfix/virtual
/etc/postfix/master.cf
Данный файл определяет определяет обслуживаемые Postfix службы. Для полного отключения локальной доставки, отредактируйте данный файл и вставьте символ # в начале следующей строки:
#local unix - n n - - local
/etc/postfix/virtual
В случае типичной настройки Postfix файл /etc/aliases используется для пересылки почты на другие аккаунты или внешние адреса. Однако, так как локальная доставка отключена, модификация файла etc/aliases не принесет результатат. Поэтому нам нужно использовать файл /etc/postfix/virtual.
postmaster [email protected] abuse [email protected] root [email protected]
Вы также можете использовать данный файл более широко. Вы можете перенаправлять почту на другие адреса, создавать простые списки рассылки или копировать почту другому пользователю и прочее..
[email protected] [email protected] [email protected] [email protected],[email protected],[email protected] [email protected] [email protected] [email protected] [email protected],[email protected]
/etc/postfix/transport
Данный файл определяет отношения между доменами и серверами, куда должна пересылаться почта для данных доменов.
example1.com smtp:insidesmtp.example.com example2.com smtp:insidesmtp.example.com subdomain.example.com smtp:insidesmtp.example.com
/etc/postfix/relay_recipients
Данный файл содержит полный списко адресов электронно почты, для которых шлюз будет принимать сообщения.
[email protected] OK [email protected] OK [email protected] OK [email protected] OK [email protected] OK [email protected] OK
Заполняем файл relay_recipients адресами из Active Directory
Данный скрипт требует установленного perl и модуля Net::LDAP.
- Скачайте скрипт с http://www-personal.umich.edu/~malth/gaptuning/postfix/getadsmtp.pl
- Отредактируйте скрипт в соответствии с своими значениями:
$VALID = "/etc/postfix/relay_recipients"; $dc1="domaincontroller1.example.com"; $dc2="domaincontroller2.example.com"; $hqbase="cn=Users,dc=example,dc=com"; $user="cn=user,cn=Users,dc=example,dc=com"; $passwd="password";
Создаем базы
Для завершения нам необходимо сделать хэшированные базы данных из наполненных нами файлов:
postmap hash:/etc/postfix/virtual postmap hash:/etc/postfix/transport postmap hash:/etc/postfix/relay_recipients
Заметка: помните, что необходимо перехэшировать базу после каждого изменения файла..
Перезапуск Postfix
Предпочитаемый способ для того, чтобы Postfix перечитал конфигурационные файлы следующий:
postfix reload
Проверка
Как вы можете видеть из следующего примера, данная конфигурация работает:
telnet emailgateway.example.com smtp 220 emailgateway.example.com ESMTP Postfix EHLO localhost 250-emailgateway.example.com 250-PIPELINING 250-SIZE 10240000 250-VRFY 250-ETRN 250 8BITMIME MAIL FROM:250 Ok RCPT TO: 554 : Relay access denied RCPT TO: 554 : Relay access denied RCPT TO: 250 Ok DATA 354 End data with . Subject: test test 1 2 3 . 250 Ok: queued as 5152A39097 QUIT 221 Bye
Источник http://spravka.zhavoronki.biz/?p=1339