суббота, 26 апреля 2008 г.

Postfix: transport_maps


Postfix: transport_maps


Задача: Необходимо организовать работу двух почтовых серверов в разных офисах. Для них зарезервировано одно доменное имя. Запись MX указывает на srv1.

На srv1

в main.cf вносим изминения:
transport_maps = hash:/etc/postfix/transport_maps

создаем файл transport_maps

вносим туда:
user_srv2_1@company.ru smtp:[srv2]
user_srv2_2@company.ru smtp:[srv2]
...
user_srv2_100@company.ru smtp:[srv2]


# postmap /etc/postfix/transport_maps

# service postfix reload

суббота, 19 апреля 2008 г.

Почтовый сервер Postfix на базе Fedora Core 8

Почтовый сервер Postfix на базе Fedora Core 8

OS: Fedora Core 8
Почтовый сервер (MTA): Postfix
Доставщик: dovecot ( с поддержкой IMAP и POP3)
Web-интерфейс: Squirrelmail
SMTP-авторизация: cyrus-sasl

Устанавливаем Postfix

yum install postfix

Настроим алиасы, чтобы вся почта для пользователя root пересылалась нашему пользователю admin
для этого в /etc/aliaces в самый конец добавим строку
root admin

В конфиге /etc/postfix/mail.cf вносим необходимые изменения:


myhostname = srvmail.company.ru

mydomain = company.ru

inet_interfaces = all

mynetworks = 192.168.254.0/28, 192.168.42.0/28, 127.0.0.0/8

Теперь нужно перезапустить сервис:

service postfix restart

Все, остальное можно оставить по умолчанию.
Для проверки отправим себе письмо:
[root@post sysconfig]# telnet 192.168.254.48 25
Trying 192.168.254.48...
Connected to srvmail.company.ru (192.168.254.48).
Escape character is '^]'.
220 srvmail.company.ru ESMTP Postfix
HELO srvmail.company.ru
250 srvmail.company.ru
mail from:fromer@from.info
*(здесь все равно что писать, если в mail.cf не включена проверка отправителя)
250 Ok
rcpt to:root@srvmail.company.ru
250 Ok
data
354 End data with .
!!!Test!!!
.
250 Ok: queued as BC1332BC5A
quit
221 Bye
Connection closed by foreign host.

Все нормально, письмо отправилось, теперь посмотрим, пришло ли оно.
Т.к. postfix хранит все почту в /var/mail/имя_пользователя, а в нашем случае письмо писалось для root, но в соответствии с настроенными алиасами было перенаправлено пользователю admin, там и смотрим:

[root@post sysconfig]# cat /var/mail/admin

Видим, что письмо доставлено и все в порядке..
Теперь сделаем, чтобы postfix запускался при старте системы:
# /sbin/chkconfig --level 35 postfix on

Устанавливаем Dovecot.
Dovecot – IMAP-сервер, рассчитанный на максимальную безопасность и надежность, способный обслуживать клиентов по протоколам imap, imaps, pop3, pop3s.

yum install dovecot

для того чтобы он заработал, достаточно в /etc/dovecot.conf найти секцию
# Protocols we want to be serving:
# imap imaps pop3 pop3s
и здесь раскомментировать и поправить строку protocols таким образом.

protocols = imap imap pop3

Перезапускаем postfix и dovecot.
И сделаем, чтобы dovecot запускался при старте системы:
# /sbin/chkconfig --level 35 dovecot on
Все, теперь пользователи могут получать почту с нашего сервера.

Настройка Postfix для поддержки аутенификации SMTP.
Постфикс может быть сконфигурирован на релей почты от пользователей, находящихся в "чужих" сетях, у которых валидны логин и пароль.
Добавим следующие строки в файл /etc/postfix/main.cf

# Эта строка информирует постфикс о том, что необходимо
# использовать SMTP AUTH когда пользователь находится
# не в 'mynetwork' и пытается отправить почту на "чужие" домены
smtpd_sasl_auth_enable = yes

# Эта опция выключает выключает "anonymous style" для SMTP AUTH.
# Без этой опции любой может использовать postfix как "open relay"
smtpd_sasl_security_options = noanonymous

# Эта опция устанавливает ограничения для клиентов,
# пытающихся релееить почту через ваш почтовый сервер
smtpd_recipient_restrictions = permit_sasl_authenticated,
permit_mynetworks,
reject_unauth_destination

Поправим файл /etc/sysconfig/saslauthd

# эта опция указывает на то, что демону saslauthd необходимо
# использовать механизм PAM (подключаемые модули аутентификации)
# для проверки каждого имени и пароля
MECH=pam

Теперь удостоверимся что демон saslauthd запускается при старте системы, выполнив от рута команду:

# /sbin/chkconfig --level 35 saslauthd on

Теперь запускаем saslauthd и postfix:

# service saslauthd restart
# service postfix restart

Постфикс стартовал и теперь он разрешает релееить почту аутентифицированным клиентам.

Устанавливаем Web-интерфейс для работы с почтой
SquirrelMail – вэб интерфейс для работы с электронной почтой.

yum install squirrelmail

Посмотрим куда он установился:
[root@srvmail etc]# whereis squirrelmail
squirrelmail: /etc/squirrelmail /usr/share/squirrelmail

/etc/squirrelmail – содержит файлы конфигурации.
/usr/share/squirrelmail – это основная директория программы

запустим файл конфигурации программы /usr/share/squirrelmail/config/conf.pl
Заполняем свои данные и незабываем указать в качестве imap севера dovecot.
Сохраняем изменения и выходим. Теперь можно попробовать постучаться на вэб интерфейс.
http://192.168.254.48/webmail/

Теперь сделаем, чтобы httpd запускался при старте системы:
# /sbin/chkconfig --level 35 httpd on
Теперь пользователи могут прямо из интернета работать со своими почтовыми ящиками.

Средства борьбы со спамом (spamassassin, postgrey)
SpamAssassin - это расширяемый почтовый фильтр, используемый для идентификации спама. Полученные почтовые сообщения могут быть выборочно помечены как спам для фильтрации в будущем аналогичных сообщенний.
Postgrey – сервер политики Postfix, который осуществляет greylisting. Когда запрос о поставке почты получен, Postfix проверяет связку CLIENT_IP / ОТПРАВИТЕЛЬ / ПОЛУЧАТЕЛЬ. Если это - первый раз, когда эта связка замечена, или если она замечена меньше чем 10 минут назад, то почта отклоняется с временной ошибкой. Правильный сервер через время повторит письмо.


Spamassassin
Т.к. в нашей системе уже установлен Amavis, spamassassin, входит в список его зависимостей и уже был установлен yum-ом. Для того чтобы он заработал, достаточно закомментировать в файле /etc/amavisd.conf строку:

# @bypass_spam_checks_maps = (1); # uncomment to DISABLE anti-spam code

И запустить саму службу: service spamassassin restart

Postgrey
yum install postgrey

В файле /etc/init.d/postgrey исправим секцию OPTIONS
OPTIONS="--inet=127.0.0.1:10023 --delay=1000 --retry-window=22h --greylist-text='Greylisted for 1000 seconds, see http://b-formula.ru/greylisted/index.html'"
*--greylist-text='Greylisted for 1000 seconds, see http://b-formula.ru/greylisted/index.html' дает возможность выводить свою html страницу с ошибкой, вместо стандартной.

Теперь нужно перезапустить сервисы:
service greylist restart
service postfix restart

И сделаем, чтобы обе сервиса запускались при старте системы:
# /sbin/chkconfig --level 35 spamassassin on
# /sbin/chkconfig --level 35 postgrey on


Пример функций /etc/postfix/mail.cf

# Размер почтового ящика устанавливаем 100Мб
mailbox_size_limit = 104857600

# Размер письма 15M
message_size_limit = 25360000

# Эта строка информирует Postfix о том, что необходимо использовать SMTP AUTH когда
# пользователь находится не в 'mynetwork' и пытается отправить почту на "чужие" домены
smtpd_sasl_auth_enable = yes

# Эта опция выключает "anonymous style" для SMTP AUTH.
# Без этой опции любой может использовать postfix как "open relay"
smtpd_sasl_security_options = noanonymous

# Требовать от клиента в начале smtp-сессии слать команду HELO/EHLO.
# До сих пор многие программы для спам рассылок не включают в себя набор этих команд.
smtpd_require_helo = yes

# Запрещаем использовать команду vrfy для определения пользователя на сервере.
disable_vrfy_command = yes

# Использовать бузу данных открытых релеев relays.ordb.org
maps_rbl_domains = relays.ordb.org

# The broken_sasl_auth_clients parameter controls interoperability with SMTP clients
# that do not recognize that Postfix supports RFC 2554 (AUTH command). Examples of
# such clients are Microsoft Outlook Express version 4 and Microsoft Exchange version 5.0.
#При использовании нестандартных клиентов, имеющих свои методы аутентификации
broken_sasl_auth_clients = yes

# Не отключать поиск доменного имени у IP адреса.
disable_dns_lookups = no

# Проверка клиента при ХЕЛО:
# клиентов в "своей" сети не проверяем
# прошедших аутентификацию не проверяем
# остальных проверяем на неправильное доменное имя
# остальных проверяем на неполное доменное имя
# остальных проверяем на наличие A и MX записей
smtpd_helo_restrictions =
#vip senders check_sender_access hash:$config_directory/vipsenders
permit_mynetworks
permit_sasl_authenticated
reject_invalid_hostname
reject_non_fqdn_hostname
reject_unknown_hostname

# ??? Эта опция устанавливает ограничения для клиентов, пытающихся релееить почту через ваш почтовый сервер
# пропускаем клиентов, описанных в файле "access_vip_sender"
# пропускаем клиентов "своей" сети
# пропускаем прошедших аутентификацию
# пропускаем если получатель в нашем (домене)??
# отклоняем клиентов с неверными имененм хоста
# отклоняем клиентов с неизвестным доменом отправителя
# отклоняем клиентов с неизвестным доменом получателя
# отклоняем клиентов если получатель не в нашем (домене)??
# отклоняем клиентов если он есть в списке relays.ordb.org
# грейлистинг
# отклоняем клиентов если он есть в списке sbl.spamhaus.org
# отклоняем клиентов если он есть в списке sbl.spamhaus.org

smtpd_recipient_restrictions =
#Включение постгрэя// обязательно перед permit_auth_destination
check_policy_service inet:127.0.0.1:10023
permit_auth_destination
permit_mynetworks
permit_sasl_authenticated
reject_invalid_hostname
reject_unknown_sender_domain
reject_unknown_recipient_domain
reject_unauth_destination

reject_rbl_client relays.ordb.org
reject_rbl_client sbl.spamhaus.org