Crmgo Blog

SENDMAIL

SENDMAIL

Sendmail ist einer der ältesten MTA (Mail Transfer Agent). Die Aufgabe von Sendmail besteht darin, E-Mails von den Mail User Agents (MUA) der Benutzer entgegenzunehmen und diese an einen anderen Mail Transfer Agent weiterzuleiten. Sendmail kann außerdem eingehende Netzwerkverbindungen empfangen und…

SENDMAIL

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

Hinweis: Dieser Beitrag kann KI-unterstützt erstellt und anschließend redaktionell geprüft worden sein. Verantwortlich: Dmytro Lomaka, Kaltenkirchen.