суббота, 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
Подписаться на:
Сообщения (Atom)