Распечатать Страница

Установка и настройка почтового релея (сервера пересылки) на ОС Linux Debian

Существенными плюсами почтовых систем на базе Linux Debian являются их бесплатность и в то же время развитая поддержка, в том числе в русскоязычном сообществе.

Но, тем не менее, для крупных организаций такие системы пока могут рассматриваться исключительно как серверы пересылки. И в этом качестве они достаточно востребованы, так как Linux системы имеют удобную для специалистов систему логирования и большой набор средств фильтрации трафика от спама и вирусов, также бесплатных.

Установка ОС Linux Debian

Процесс установки ОС достаточно тривиален: скачиваем образ с официального сайта http://cdimage.debian.org/, монтируем и грузимся. Во время установки можно выбрать русскую консоль, проблем не будет. Почти все настройки можно выбрать по умолчанию, В качестве зеркала я обычно выбираю mirror.yandex.ru, пока с ним проблем не возникало.

На этапе выбора программного обеспечения оставляем только SSH-сервер и утилиты:

PO

После установки и перезагрузки можно запускать putty и подключаться к системе по ssh под пользователем, указанным в процессе инсталляции (под root-ом система пока не пустит). Затем получаем права root, выполнив команду su и введя пароль root.

Перед загрузкой и установкой остального ПО стоит поправить файл с источниками загрузок:

nano /etc/apt/sources.list

Закомментируем значком # строку , начинающуюся с deb cdrom: … — тем самым мы отключаем поиск дистрибутивов на локальном диске, там они устаревшие. После этого жмем Ctrl+X и подтверждаем запись.

Настройка сетевых параметров

Если в сети с установленным сервером не запущена служба dhcp, ваш новый сервер не получит ip-адрес и вам не удастся подключиться к нему по ssh. В этом случае нужно прописать статические настройки для интерфейса:

набираем nano /etc/network/interfaces и удаляем в файле настроек строку с dhcp, вставив вместо нее строки:

iface eth0 inet static
address 172.0.0.8
netmask 255.255.255.0
gateway 172.0.0.1

где eth0 — имя интерфейса, может быть другим, его можно посмотреть командой ifconfig.

Адрес, маску и шлюз также выбираете по настройкам своей сети.

Установка и настройка почтовой системы Postfix

По умолчанию в системе в качестве mail-агента установлен exim4, но я обычно использую postfix, По-моему у него более «читаемые» файлы конфигурации, да и просто я к нему привык 🙂

Итак устанавливаем postfix:

aptitude install postfix

Система сообщит, что дополнительно будет установлен пакет ssl-cert, а также о конфликте пакетов и предложит удалить exim4:

exim

Жмем Y и Enter.

Далее выбираем тип установки «Система-спутник»

mxtype

Хотя это не принципиально, так как файл конфигурации позже будем переписывать.

Далее указываем имя сервера, а имя имя релея (запись типа smtp.domain.com) оставляем пустой.

После этого нужно привести файл конфигурации postfix /etc/postfix/main.cf к виду:

# —- Main Settings —-
#Внешнее имя релея
myhostname = mx1.domain.com
mydomain = DOMAIN.com
myorigin = $mydomain

#Доверенные сети, для защиты от подделки адреса
mynetworks = 127.0.0.0/8, 192.168.0.0/16, 172.0.0.8
local_recipient_maps =
transport_maps = hash:/etc/postfix/transport

#Домены, для которых разрешена пересылка почты
relay_domains = fil1.domain.com, fil2.domain.com, fil3.domain.com

# —- Alias —-
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases

# —- TLS parameters —-
#Самоподписанные сертификат и ключ для шифрования соединений
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls = yes
smtpd_tls_security_level = may
smtpd_tls_received_header = yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_loglevel = 1

smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_security_level = may
smtp_use_tls = yes
smtp_tls_loglevel = 1

#Имя, отображаемое в сессии smtp
smtpd_banner = $myhostname
biff = no
append_dot_mydomain = no
maximal_queue_lifetime = 2d

#Ограничения размера сообщения в байтах
message_size_limit = 15728640
bounce_queue_lifetime = 2h
bounce_notice_recipient = postmaster
inet_protocols = ipv4
# —- smtpd Settings —-

smtpd_helo_required = yes
smtpd_delay_reject = yes
strict_rfc821_envelopes = yes
disable_vrfy_command = yes

smtpd_recipient_restrictions =
#Можно включить проверку адресов получателей
# check_recipient_access hash:/etc/postfix/recipient_checks
permit_mynetworks
reject_unknown_reverse_client_hostname
check_client_access hash:/etc/postfix/client_access
check_client_access pcre:/etc/postfix/client_access.pcre
reject_unauth_destination
reject_non_fqdn_sender
reject_unknown_sender_domain
reject_invalid_hostname
reject_non_fqdn_recipient
reject_unknown_recipient_domain
reject_unlisted_recipient
reject_unauth_pipelining
check_sender_access pcre:/etc/postfix/sender_access
permit

receive_override_options = no_address_mappings
setgid_group = postdrop
maximal_backoff_time = 300s
smtp_connect_timeout = 65s
smtp_helo_timeout = 65s

smtpd_delay_reject = yes
smtpd_error_sleep_time = 1s
smtpd_soft_error_limit = 10
smtpd_hard_error_limit = 30
#2 дня релей будет пытаться отправить сообщение при сбоях
maximal_queue_lifetime = 2d

В этом конфиге приведены основные рекомендуемые мной настройки для почтового релея с проверками отправителя по ip и по e-mail адресу — это первый и основной уровень защиты почтовой системы от спама.

В файле /etc/postfix/transport хранятся указатели, на какие сервера отправлять почту для доменов, если их несколько, формат простой и понятный. Используется как для входящей, так и для исходящей почты. Например, вы можете отправлять почту с незарегистрированным доменным именем, указав сервер приема в этом файле.

Пример файла:

fil1.domain.com smtp:[exchange.domain.com]
fil2.domain.com smtp:[exchange.domain.com]

Теперь рассмотрим подробнее файлы фильтров.

/etc/postfix/client_access — в файл добавляются ip-адреса хостов, от которых мы не хотим принимать почту (значение DISCARD), а также адреса «нужных» хостов, не имеющих записи PTR, а потому отбрасываемых по правилу reject_unknown_reverse_client_hostname (ставим значение ОК). Пример файла:

# Restrict access from ip’s:
64.19.96.105 DISCARD
162.222.225.75 DISCARD
188.120.241.71 DISCARD
69.145.248.58 DISCARD
91.247.220.35 DISCARD
62.109.16.245 DISCARD
188.120.231.110 DISCARD
64.90.62.20 DISCARD
62.109.18.32 DISCARD
188.120.231.191 DISCARD
5.178.115.20 DISCARD
221.3.8.179 DISCARD
123.157.104.67 DISCARD
103.19.169.243 DISCARD
190.235.136.115 DISCARD

202.134.40.6 OK
209.67.159.188 OK
78.108.84.6 OK
218.101.6.108 OK
37.200.121.229 OK
81.25.60.218 OK
195.12.188.72 OK
162.130.1.199 OK
66.150.201.161 OK
91.236.166.226 OK

После создания файла нужно создать хэш командой postmap /etc/postfix/client_access

/etc/postfix/client_access.pcre — список хостов, имеющих в своем имени признаки dhcp-пула, такие адреса обычно выдаются провайдерами для персональных компьютеров, но не для почтовых систем. Записи в файле представлены в формате pcre. Пример файла:

#
/218\-101\-6\-108\.dsl\.clear\.net\.nz\.lt\.eu/i OK     #Исключаем «нужные» хосты вначале
/117\.242\-\136\-217\.adsl\-static\.isp\.belgacom\.be/i OK
#
/\.dsl.*\..*\..*/i DISCARD Your message looks like SPAM 02
/cable.*\..*\..*/i DISCARD Your message looks like SPAM 03
/client.*\..*\..*/i DISCARD Your message looks like SPAM 04
/dhcp.*\..*\..*/i DISCARD Your message looks like SPAM 05
/dial.*\..*\..*/i DISCARD Your message looks like SPAM 06
/dialup.*\..*\..*/i DISCARD Your message looks like SPAM 07
/dslam.*\..*\..*/i DISCARD Your message looks like SPAM 08
/node.*\..*\..*/i DISCARD Your message looks like SPAM 09
/pool.*\..*\..*/i DISCARD Your message looks like SPAM 10
/ppp.*\..*\..*/i DISCARD Your message looks like SPAM 11
/user.*\..*\..*/i DISCARD Your message looks like SPAM 12

/etc/postfix/recipient_checks — список получателей, которых хотим заблокировать, пропустить. Пример файла:

fedotov@domain.com    OK
mamkina@domain.com        REJECT Recipient disabled

Для файла также создаем хэш postmap /etc/postfix/recipient_checks

/etc/postfix/sender_access — в файле хранятся списки правил для блокировки email-адресов отправителей и исключения из этих правил (как обычно, исключения вначале). Пример файла:

#
/.*@sd\.domain\.com/i OK
/.*@zabbix\.domain\com/i OK
/zabbix@domain\.com/i OK
#
#  Защита от подделки адреса — фильтр адресов спамеров, пытающихся отправить почту от имени вашего домена (исключения из этого правила описаны выше). Правило действует на все хосты, ip которых не входит в диапазон, указанный в параметре mynetworks в main.cf
/.*@domain\.com/i REJECT Faked address
/.*@.*\.domain\.com/i REJECT Faked address

# Блокировка рассылок
/.*rassylkyvsyakoifigni.ru\.ru/i DISCARD Rassylki
/.*@drugayarassylka\.ru/i DISCARD Rassylki
# Spammers
/.*@yaspammer\.com\.ua/i REJECT Spam sender
/shlyu@spam\.ru/i REJECT Spam sender

Правила тоже написаны в формате pcre, не забываем postmap /etc/postfix/sender_access

Теперь перезапускаем postfix командой /etc/init.d/postfix restart и пробуем отправить тестовое письмо, набирая последовательно команды:

telnet localhost 25
ehlo domain.com
mail from:<root@mx3.domain.com>
rcpt to:<vitamol@list.ru>
data
test message
.
quit

В окне это должно выглядеть так:

telnetsmtp

Рассмотрим ответы сервера.

220 Debian/GNU — представление сервера, то, что указано в параметре smtpd_banner в main.cf

В следующий ответ на наше приветствие ehlo сервер отправляет набор своих текущих параметров, начинающихся кодом 250. Нам здесь могут быть интересны параметры SIZE (максимальный размер сообщения и STARTTLS (поддержка шифрования TLS включена).

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

cat /var/log/mail.log

testlog

Сообщение в логе to=<vitamol@list.ru>, relay=mxs.mail.ru[217.69.139.150]:25, delay=21, delays=20/0/0.02/0.8, dsn=2.0.0, status=sent (250 OK id=1b04Bq-0002m8-0y) говорит о том, что сообщение успешно передано серверу mxs.mail.ru.

Также видим, что подключение между серверами зашифровано протоколом TLS 256bit.

Важным моментом является создание «обратной» записи DNS для сервера. На многих почтовых системах используется проверка наличия такой записи при приеме почты, и в случае её отсутствия сообщения с вашего сервера могут получить дополнительные баллы спама, либо вовсе будут отброшены. Поэтому не поленитесь, и попросите провайдера, выделившего вам ip-адрес, добавить запись PTR для вашего сервера в реверсную зону DNS-сервера.
На этом первоначальная настройка почтового релея с поддержкой шифрования TLS закончена.

Следующий этап настройки почтового релея — установка и настройка антивирусной и антиспамовой защиты.

 

Поделиться ссылкой ...

Постоянная ссылка на это сообщение: http://ucblog.ru/%d1%83%d1%81%d1%82%d0%b0%d0%bd%d0%be%d0%b2%d0%ba%d0%b0-%d1%80%d0%b5%d0%bb%d0%b5%d1%8f-%d0%bd%d0%b0-linux/

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

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

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>