Sendmail ist einer der ältesten MTAs (Mail Transfer Agents).
Die Aufgabe von Sendmail besteht darin, E-Mails von den Mail-Agents der Benutzer (MUA) entgegenzunehmen und an einen anderen Mail-Transfer-Agent weiterzuleiten.
Sendmail kann auch eingehende Netzwerkverbindungen annehmen und die E-Mails in lokale Postfächer der Benutzer zustellen oder an ein anderes Programm weiterleiten.
Häufig wird auf Foren die Frage gestellt: „Wie konfiguriere ich einen Mail-Server?“. In diesem Artikel beschreibe ich den Installations- und Konfigurationsprozess des Mail-Servers Sendmail.
Vorausgesetzt wird Folgendes:
- Die IP-Adresse des Mail-Servers ist 192.168.0.10;
- Der Mail-Domain-Name lautet test.ru;
- Der Hostname des Mail-Servers ist mail.test.ru.
- Die Adressen, von denen aus E-Mails über unseren Server gesendet werden dürfen, sind 192.168.0.0/24.
Der Mail-Server muss so konfiguriert werden, dass so viel unerwünschte E-Mails (Spam) wie möglich herausgefiltert werden und zudem der gesamte eingehende Mailverkehr auf Viren überprüft wird.
Installation des Mail-Servers Sendmail
Die Installation des SMTP-Servers Sendmail ist eine sehr einfache Aufgabe:
# yum install sendmail
Installation des Spam-Schutzes milter-greylist
Die Verwendung von Greylisting ermöglicht es, mehr als 95 % des Spams bereits in der Verbindungsphase zu blockieren, was den eingehenden Traffic auf Ihrem Mail-Server erheblich reduziert.
Installieren Sie die Spam-Schutzsoftware milter-greylist.
Benutzer von Fedora können das Paket milter-greylist aus den offiziellen Repositories installieren:
# yum install milter-greylist
Für Benutzer der Distributionen RHEL und CentOS ist das Paket milter-greylist im RPMforge-Repository verfügbar.
Für andere Distributionen laden wir das SRPM-Paket von http://download.fedora.redhat.com, kopieren es in das Verzeichnis /usr/src/redhat/SOURCES/ und bauen es mit dem Befehl neu:
# rpmbuild --rebuild milter-greylist-X.X.X.src.rpm
Das kompilierte Binärpaket befindet sich im Verzeichnis /usr/src/redhat/RPMS/i386/ und trägt den Namen milter-greylist-X.X.X.rpm.
Wir installieren es:
# rpm -Uhv milter-greylist-X.X.X.rpm
Installation des Virenscanners Clamav
Wir installieren den derzeit besten kostenlosen Virenscanner, Clamav. Die Installation erfolgt mit dem Befehl:
# yum install clamav*
Ändern Sie die Startskripte:
# chkconfig --add milter-greylist # chkconfig --add clamd # chkconfig --add clamav-milter # chkconfig --add sendmail
Konfiguration des Mail-Servers Sendmail
Konfiguration von Sendmail
1. Ändern Sie die Datei /etc/mail/access:
localhost.localdomain RELAY localhost RELAY 127.0.0.1 RELAY 192.168.0.0/24 RELAY
2. Geben Sie in der Datei /etc/mail/local-host-names Folgendes an:
mail.test.ru localhost
3. Fügen Sie in die Datei /etc/mail/sendmail.mc folgende Zeilen hinzu:
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 )
Ändern Sie die Option dnl MASQUERADE_AS(mydomain.com')dnl in MASQUERADE_AS(test.ru')dnl.
Führen Sie den Befehl make im Verzeichnis /etc/mail/ aus.
Die Konfiguration von Sendmail ist damit abgeschlossen.
Konfiguration von Clamav
Nehmen Sie in der Datei /etc/clamd.conf folgende Änderungen vor:
TCPSocket 3310 TCPAddr 127.0.0.1 ScanPE ScanOLE2 ScanMail ScanHTML ScanArchive ScanRAR ArchiveMaxFileSize 10M
Ändern Sie die Zugriffsrechte:
# chmod 666 /var/log/clamav/clamd.log
Starten Sie die Clamav-Dienste:
# service clamd start # service clamav-milter start
Konfiguration von Greylisting
Fügen Sie in die Datei /etc/mail/greylist.conf Folgendes hinzu:
acl whitelist addr 192.168.0.0/24.
Im Prinzip ist dies für den Betrieb ausreichend.
Ich liste hier die nützlichsten Optionen in der Datei greylist.conf auf:
# Включите данную опцию для работы в режиме отладки
# Все опции объявленные перед "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"
Starten Sie den Dienst milter-greylist:
# service milter-greylist start
Starten Sie den Dienst sendmail:
# service sendmail start
Wenn Sie eine Firewall eingerichtet haben, müssen Sie zulassende Regeln hinzufügen:
*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
Die Konfiguration des Mail-Servers ist damit abgeschlossen!
Konfiguration des DNS-Servers
Für den ordnungsgemäßen Betrieb des Servers müssen Sie auch Änderungen am DNS-Server vornehmen. Die Zone test.ru könnte beispielsweise wie folgt aussehen:
$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
Es sind auch Änderungen in der Reverse-Zone erforderlich:
$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.
Empfang von E-Mails
Um E-Mails zuzustellen, müssen Sie noch einen POP3- oder IMAP-Server, zum Beispiel dovecot, installieren und konfigurieren.
Fazit
So haben wir einen voll funktionsfähigen SMTP-Mailserver Sendmail mit zusätzlichen Funktionen zur Überprüfung aller eingehenden E-Mails auf Viren und Spam eingerichtet.
Autor: Denis Frolov
