Crmgo Blog

SENDMAIL

SENDMAIL

Sendmail je jedním z nejstarších MTA (agentů pro přenos pošty). Úkolem Sendmailu je přijímat poštu od poštovních agentů uživatelů (MUA) a odesílat ji dalšímu agentovi pro přenos pošty. Sendmail může také přijímat příchozí síťová připojení a…

SENDMAIL

Sendmail - jeden z nejstarších MTA (agentů přenosu pošty).

Úkolem Sendmailu je přijímat poštu od poštovních agentů uživatelů (MUA) a odesílat ji dalšímu agentovi přenosu pošty.

Sendmail může také přijímat příchozí síťová připojení a doručovat poštu do lokálních poštovních schránek uživatelů nebo ji přesměrovat na jinou utilitu.

Velmi často se na fórech objevuje otázka: „Jak nastavit poštovní server?“ V tomto článku popisuji proces instalace a konfigurace poštovního serveru Sendmail.

Předpokládá se, že:

  • IP adresa poštovního serveru je 192.168.0.10;
  • Poštovní doména má název test.ru;
  • Domené jméno poštovního serveru je mail.test.ru.
  • Adresy, ze kterých lze odesílat poštu přes náš server, jsou 192.168.0.0/24.

Je třeba nastavit poštovní server tak, aby se odsejovalo co nejvíce nežádoucí pošty (spam) a zároveň se prováděla kontrola veškeré příchozí pošty na přítomnost virů.

Instalace poštovního serveru Sendmail

Instalace SMTP serveru sendmail je velmi jednoduchým úkolem:

# yum install sendmail

Instalace ochrany proti spamu milter-greylist

Použití šedých seznamů umožňuje blokovat více než 95 % spamu již ve fázi připojení, což výrazně snižuje příchozí provoz na vašem poštovním serveru.

Nainstalujte software pro ochranu proti spamu milter-greylist.

Uživatelé Fedory mohou nainstalovat balíček milter-greylist z oficiálních repozitářů:

# yum install milter-greylist

Pro uživatele distribucí RHEL a CentOS je balíček milter-greylist dostupný v repozitáři RPMforge.

Pro ostatní distribuce stáhněte SRPM balíček z http://download.fedora.redhat.com, zkopírujte jej do adresáře /usr/src/redhat/SOURCES/ a přeložte pomocí příkazu:

# rpmbuild --rebuild milter-greylist-X.X.X.src.rpm

Přeložený binární balíček bude umístěn v adresáři /usr/src/redhat/RPMS/i386/ a bude se jmenovat milter-greylist-X.X.X.rpm.

Nainstalujte jej:

# rpm -Uhv milter-greylist-X.X.X.rpm

Instalace antiviru Clamav

Nainstalujeme nejlepší bezplatný antivirus současnosti, kterým je Clamav. Instalaci provedete pomocí příkazu:

# yum install clamav*

Upravte spouštěcí skripty:

# chkconfig --add milter-greylist
# chkconfig --add clamd
# chkconfig --add clamav-milter
# chkconfig --add sendmail

Konfigurace poštovního serveru Sendmail

Konfigurace Sendmailu

1. Upravte soubor /etc/mail/access:

localhost.localdomain           RELAY
localhost                       RELAY
127.0.0.1                       RELAY
192.168.0.0/24                  RELAY

2. V souboru /etc/mail/local-host-names zadejte:

mail.test.ru
localhost

3. Do souboru /etc/mail/sendmail.mc přidejte řádky:

define(`confMAX_RCPTS_PER_MESSAGE', `10')dnl # Кол-во получателей для каждого письма не более 10
define(`confMAX_MESSAGE_SIZE', `5242880')dnl # Максимальный размер письма 5 МБ

# Добавляем Clamav-milter
INPUT_MAIL_FILTER(`clmilter',`S=local:/var/run/clamav/clamav-milter.sock,F=, T=S:4m;R:4m')dnl
define(`confINPUT_MAIL_FILTERS', `clmilter')
FEATURE(`milter-greylist')dnl # Добавляем greylist-milter
define(`confSMTP_LOGIN_MSG', `$b')dnl # Убираем банер sendmail
dnl # Черные списки
FEATURE(`dnsbl', `bl.spamcop.net', `"Spam blocked see: ?"$&{client_addr}')dnl
FEATURE(`dnsbl', `xbl.spamhaus.org', `You are trying to send spam - see
FEATURE(`dnsbl', `sbl.spamhaus.org', `You are trying to send spam - see
FEATURE(`dnsbl', `cbl.abuseat.org', `Rejected - see
FEATURE(`dnsbl', `relays.ordb.org', `Rejected - see
FEATURE(`dnsbl', `list.dsbl.org', `Rejected - see
FEATURE(`dnsbl', `dnsbl.njabl.org',`Кejected - see )

Změňte možnost dnl MASQUERADE_AS(mydomain.com')dnl na MASQUERADE_AS(test.ru')dnl.

V adresáři /etc/mail/ spusťte příkaz make.

Tím je konfigurace Sendmailu dokončena.

Konfigurace Clamav

Do souboru /etc/clamd.conf proveďte následující změny:

TCPSocket 3310
TCPAddr 127.0.0.1
ScanPE
ScanOLE2
ScanMail
ScanHTML
ScanArchive
ScanRAR
ArchiveMaxFileSize 10M

Změňte oprávnění:

# chmod 666 /var/log/clamav/clamd.log

Spusťte služby Clamav:

# service clamd start
# service clamav-milter start

Konfigurace šedých seznamů

Do souboru /etc/mail/greylist.conf přidejte:

acl whitelist addr 192.168.0.0/24.

Toto by mělo stačit pro základní fungování.

Uvedu seznam nejužitečnějších možností v souboru greylist.conf:

# Включите данную опцию для работы в режиме отладки
# Все опции объявленные перед "verbose" не будут обработаны в режиме отладки
# Данная опция может быть заменена аргументом "-v" в командной строке
# verbose

# Если вы работаете с несколькими записями MX опишите каждую из них записью
# peer для включения greylisting синхронизации между MX записями.
# peer 192.0.2.17
# peer 192.0.2.18

# Вы можете указать свой локальный адрес или порт для
# синхронизации данных между MX.
# Указав значение '*' в адресе вы даете возможность синхронизироваться любому адресу.
# syncaddr *
# syncaddr * port 7689
# syncaddr 192.0.2.2
# syncaddr 192.0.2.2 port 9785
# syncaddr 2001:db8::1:c3b5:123
# syncaddr 2001:db8::1:c3b5:123 port 1234

# Данная опция включает greylisting для вашего MTA (Mail Transfer Agent)
# Это очень плохая идея:данная   опция никогда не должна быть включена.
acl whitelist addr 127.0.0.0/8

# Если вы используете IPv6, включите данный параметр
# acl whitelist addr ::1/128

# Если вы не желаете  использовать greylisting для своих клиентов,
# вы можете указывать блоки IP-адресов для которых не будет
# выполняться фильтрация. Для примера если вы используете 192.0.2.0/16
acl whitelist addr 192.0.2.0/16

# Также имеется возможность внести в "белый" список компьютер, для
# которого не будет выполняться greylisting по его имени в DNS.
# acl whitelist domain example.net

# Вы можете указать фильтру greylisting отправителей для который не нужно
# выполнять фильтрацию. Это не очень хорошая идея, так как адрес
# отправителя достаточно легко подделать
# acl whitelist from friendly@example.com

# Некоторые из ваших пользователей не хотят чтобы их почта подвергалась обработке greylisting.
# Для них укажите опцию:
# acl whitelist rcpt John.Doe@example.net

# Также существует возможность с помощью регулярных выражений указать список
# получателей почты для которых не нужно выполнять greylisting.
# Регулярное выражение должно быть заключено в символы (/).
# acl whitelist rcpt /.*@example\.net/

# Данная опция говорит greylisting добавлять поля X-Greylist
# в заголовки писем. По умолчанию данная опция установлена в значение
# all - что указывает на необходимость добавлять подробную информацию в заголовки.
# Другие возможные значения параметра: none, delays и nodelays.
# report all

# Указывает greylisting с какой периодичностью делать запись dump файла
# (0 после каждого изменения -1 никогда)
# dumpfreq 10m

# Указывает период, в течении которого необходимо хранить информацию
# о процессе greylisting в базе.
# timeout 5d

# Не использовать макрос ${greylist} для базы access sendmail-а
# noaccessdb

# Указывает на необходимость использования расширенных регулярных выражений
# вместо базовых регулярных выражений
# extendedregex

# Как долго клиент должен ждать перед тем как получит возможность
# послать успешное сообщение. По умолчанию 1 час.
# Данная опция может быть заменена с помощью ключа командной строки "-w greylist_delay"
# greylist 1h

# Определяет интервал времени, на который необходимо заносить прошедших проверку в "белый" писок
# (установите в 0 для отключение автоматического занесения в
# "белый" список). По умолчанию интервал 3 дня.
# Данная опция может быть заменена с помощью ключа командной строки "-a autowhite_delay"
# autowhite 3d

# Задает сетевую маску для использования при проверке IPv4 адресов в greylisting.
# Данная опция может быть заменена с помощью ключа командной строки "-L cidrmask"
# subnetmatch /24

# Задает сетевую маску для использования при проверке IPv6 адресов в greylisting.
# Данная опция может быть заменена с помощью ключа командной строки "-M prefixlen"
# subnetmatch6 /64

# Клиенты успешно прошедшие SMTP AUTH не проверяются grelisting.
# Включите данную опцию для проверки greylisting этих клиентов.
# Данная опция может быть заменена с помощью ключа командной строки -A
# noauth

# Если вы собрали milter-greylist  с поддержкой технологии
# SPF (Sender Policy Framework), тогда отправители
# поддерживающие технологию SPF не обрабатываются greylisting.
# Раскоментируйте данную строку для проверки SPF отправителей.
# Подробнее о SPF на сайте
# Данная опция может быть заменена с помощью ключа командной строки -S
# nospf

# Включите данную опцию если вы не хотите чтобы milter-greylist выполнялся  как фоновый процесс
# Данная опция может быть заменена с помощью ключа командной строки -D
# nodetach

# Включите данный параметр если вы не хотите чтобы milter-greylist говорил клиентам
# на какой срок они попали в greylisting.
# Данная опция может быть заменена с помощью ключа командной строки -q
# quiet

# Определяет в каком файле milter-greylist будет хранить PID своего процесса
# Данная опция может быть заменена с помощью ключа командной строки -P pidfile
# pidfile "/var/run/milter-greylist.pid"

# Указывает имя сокета для коммуникации с sendmail.
# Данная опция может быть заменена с помощью ключа командной строки -p socket
# socket "/var/milter-greylist/milter-greylist.sock"

# Указывает расположение файла dump-а (базы greylisting).
# Данная опция может быть заменена с помощью ключа командной строки -d dumpfile
# dumpfile "/var/milter-greylist/greylist.db"

# Указывает имя пользователя под которым будет работать greylisting.
# Данная опция может быть заменена с помощью ключа командной строки -u username
# user "smmsp"

Spusťte službu milter-greylist:

# service milter-greylist start

Spusťte službu sendmail:

# service sendmail start

Pokud máte nakonfigurovaný firewall, musíte přidat povolovací pravidla:

*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT DROP [0:0]
-A INPUT -i eth0 -d 192.168.0.10/32 -p tcp --dport 25 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.0.10/32 -p tcp --sport 25 -j ACCEPT
-A INPUT -i eth0 -d 192.168.0.10/32 -p tcp --sport 25 -j ACCEPT
-A OUTPUT -o eth0 -s 192.168.0.10/32 -p tcp --dport 25 -j ACCEPT

Tím je konfigurace poštovního serveru dokončena!

Konfigurace DNS serveru

Pro správné fungování serveru musíte provést změny také na DNS serveru. Například zóna test.ru může vypadat takto:

$TTL 86400
@ IN      SOA     ns.test.ru.    admin.test.ru. (
    2006092901 ; serial
    7200 ; refresh
    3600 ; retry
    604800 ; expire
    86400 ; default_ttl
    )
    IN      NS              ns.test.ru.
    IN      NS              ns.test2.ru.
    IN      MX              10 mail.test.ru.

localhost       IN      A       127.0.0.1
mail            IN      A       192.168.0.10

Je také nutné provést změny v zpětné zóně:

$TTL 86400
@               IN      SOA     ns.test.ru.     admin.test.ru. (
    2006092901 ; serial
    7200 ; refresh
    3600 ; retry
    604800 ; expire
    86400 ; default_ttl
)
@               IN      NS      ns.test.ru.
@               IN      NS      ns.test2.ru.
10              IN      PTR     mail.test.ru.

Přijímání pošty

Pro doručování pošty vám zbývá nainstalovat a nakonfigurovat POP3 nebo IMAP server, například dovecot.

Závěr

Tímto jsme nastavili plně funkční SMTP server Sendmail s dalšími funkcemi kontroly veškeré příchozí pošty na viry a spam.

Autor: Denis Frolov

Poznámka: příspěvek mohl vzniknout s pomocí AI a lidskou redakcí. Odpovědný: Dmytro Lomaka, Kaltenkirchen.