Настройка почтового шлюза на базе Postfix

Настройка

В данной статье мы не будем рассматривать установку 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

Запись опубликована в рубрике *Mail, Postfix. Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Я не спамер This plugin created by Alexei91