Inhaltsverzeichnis
Postfix ArchLinux - Konfiguration: main server - Quota-Konfiguration
Postfix ist Wietse Venema's Mail-Server, welcher bei „IBM research“ als Alternative zum ehemals weit verbreiteten Programm Sendmail entwickelt wurde. Postfix erhebt den Anspruch ein schneller, einfach zu administrierender und sicherer Mail-Server zu sein.
Postfix wird von Wietse Venema entwickelt.
Beschreibung | Externer Link |
---|---|
Homepage | http://www.postfix.org |
Ankündigungen | http://www.postfix.org/announcements.html |
Dokumentation | http://www.postfix.org/documentation.html Postfix SMTP relay and access control - Getting selective with SMTP access restriction lists |
Ab hier werden zur Ausführung nachfolgender Befehle root
-Rechte benötigt. Um der Benutzer root
zu werden, melden Sie sich bitte als root
-Benutzer am System an, oder wechseln mit nachfolgendem Befehl zum Benutzer root
:
$ su - Password:
Vorhaben
Es soll für die Kommunikation via E-Mail mit Postfix nachfolgendes Konstrukt, wie in der gezeigten Skizze zu sehen ist, zum Einsatz kommen:
┌──────────────────────┐ ┌───┐ │ Postfix- │ │ I │ │ null client │ │ N │ ├──────────────────────┤ │ T │ │ Interne │ ┌───────◄ E │ │ clients │ │ │ R │ ├──────────────────────┤ │ │ N │ │ │ │ │ E │ │ Relay: main client │ │ │ T │ │ │ │ │ │ └▼───▼───▼─────────────┘ │ └─▲─┘ │ │ │ │ │ │ │ │ ┌───────────────────────────────────────────────────┘ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────────────────┐ │ │ │ │ │ │ Postfix- │ │ │ │ │ │ │ main server │ │ │ │ │ │ ├───────────────────────────────────────────┤ │ │ │ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────────┐ │ │ │ │ └───┴───┼───► IN Port: 25 OUT │ │ │ │ │ │ ├───────────────────────────────────┤ │ │ │ │ │ │ ✔ interne E-Mail │ │ │ │ │ │ │ ✘ externe E-Mail │ │ │ │ │ │ │ ✔ Verschlüsselungen: möglich │ │ │ │ │ │ │ ✘ Authentifizierung: KEINE │ │ │ │ │ │ └───────────────────────────────────┘ │ │ │ │ │ │ │ │ │ │ ┌───────────────────────────────────┐ │ │ │ └───────────┼───► IN Port: 465 OUT ►───┼─────────────┤ │ │ ├───────────────────────────────────┤ │ │ │ │ │ ✔ interne E-Mail │ │ │ │ │ │ ✔ externe E-Mail │ │ │ │ │ │ ✔ Verschlüsselungen: möglich │ │ │ │ │ │ ✔ Authentifizierung: Zertifikat │ │ │ │ │ └───────────────────────────────────┘ │ │ │ │ │ │ │ │ ┌───────────────────────────────────┐ │ │ └───────────────┼───► IN Port: 587 OUT ►───┼─────────────┘ │ ├───────────────────────────────────┤ │ │ │ ✔ interne E-Mail │ │ │ │ ✔ externe E-Mail │ │ │ │ ✔ Verschlüsselungen: möglich │ │ │ │ ✔ Authentifizierung: SASL │ │ │ └───────────────────────────────────┘ │ │ │ │ 'mx1.tachtler.net' │ │ │ └─────────────────────┬─────────────────────┘ │ ┌───────────▼───────────┐ │ │ │ 'imap.tachtler.net' │ │ │ │ Port: 24 │ │ ✔ TLS-verschlüsselt │ │ ✔ LMTP(s)-Transport │ │ │ └───────────────────────┘
Der Postfix-main server soll über die nachfolgenden drei Ports aus dem internen Netz und externen Internet wie folgt erreichbar gemacht werden:
25
-smtp
- ohne Authentifizierung - Zustellung an lokale Empfänger, jedoch keine Zustellung an externe Empfänger (relay).465
-smtps
- Zertifikats-Authentifiziert - Zustellungen an lokale Empfänger und externe Empfänger (relay)587
-submission
- SASL-Authentifiziert - Zustellungen an lokale Empfänger und externe Empfänger (relay)
HINWEIS - Eine Zustellung von E-Mails an externe Empfänger im Internet soll auch für interne Clients auf Port 25
NICHT möglich sein!
Dabei soll über alle Ports aus dem internen Netz und externen Internet via TLS/StartTLS-Verschlüsselung kommuniziert werden können.
Der Postfix-main server soll alle E-Mails an Dovecot: imap-tachtler.net
über Port 24
und via TLS-Verschlüsselung weiterleiten.
Voraussetzungen
Für die nachfolgende Installation wird vorausgesetzt,
- dass eine lauffähige Version von Postfix ab Version 3.9
vorhanden ist und die unter nachfolgenden Links beschriebenen Installationen und Konfigurationen von Postfix als Mindestvoraussetzung zwingend durchgeführt wurden:
Für die nachfolgende Installation wird zusätzlich vorausgesetzt,
- dass eine lauffähige Version von Dovecot ab Version 2.3
vorhanden ist und die unter nachfolgenden Links beschriebenen Installationen und Konfigurationen von Dovecot als Mindestvoraussetzung zwingend durchgeführt wurden:
Quota-Konfiguration: smtpd
Die interne/externe Kommunikation vom Postfix-null client oder auch von Smartphones, Laptops oder sonstiges clients zum Postfix-main server soll mit einer Prüfung des zur Verfügung stehenden Speicherplatzes im backend-System dem MDA z.B. Dovecot und einer Abfrage des noch in der mailbox (Postfach) zur Verfügung stehenden freien Speicherplatzes erfolgen.
smtpd_end_of_data_restrictions
Information | Beschreibung |
---|---|
Dokumentation | http://www.postfix.org/postconf.5.html#smtpd_end_of_data_restrictions Postfix SMTP relay and access control - Getting selective with SMTP access restriction lists |
Defaultwert | smtpd_end_of_data_restrictions = |
Neuer Wert | smtpd_end_of_data_restrictions = check_policy_service inet:imap.tachtler.net:12340 |
Beschreibung | Optionale Zugriffsbeschränkungen, die der Postfix-SMTP-Server im Zusammenhang mit dem SMTP-Befehl END-OF-DATA anwendet. Siehe Postfix SMTP relay and access control, Abschnitt Delayed evaluation of SMTP access restriction lists für eine Diskussion von Auswertungskontext und -zeit. |
HINWEIS - Ein Einsatz in den smtpd_recipient_restrictions
, ist NICHT zu empfehlen, da in diesem Fall auf die Grössenangaben des Clients im MAIL FROM
„ vertraut werden müsste. Wenn der Client jedoch das nicht unterstützt oder sich nicht daran hält, wird eine Berechnung der Grösse zu diesem Zeitpunkt nicht oder nicht genau genug erfolgen! Es ist besser dem Client lieber nicht zu vertrauen und Postfix es lieber selbst herausfinden zu lassen - am Ende der DATA
-Phase in smtpd_end_of_data_restrictions
.
WICHTIG - Postfix kann und sollte auch die Grösse der Nachricht selbst berechnen!
Siehe auch nachfolgenden externen Link zu diesem Thema und der Fragestellung:
Weiterführenden Informationen zu den restrictions
in Postfix, sind unter nachfolgendem externen Link vorhanden:
/etc/postfix/main.cf
HINWEIS - Es sind keine zusätzliche Änderungen notwendig!
Falls vorstehende Änderungen durchgeführt wurden, sollte ein Neustart von Postfix nichts mehr im Wege stehen.
Bevor der der postfix/master
-Daemon/Dienst zum ersten mal gestartet werden soll, ist eine Überprüfung der korrekten Konfiguration durch nachfolgenden Befehl, zu empfehlen
postconf -n
und es sollte eine Ausgabe, in etwa wie die nachfolgend gezeigte erscheinen:
# postconf -n alias_database = $alias_maps alias_maps = lmdb:${config_directory}/aliases broken_sasl_auth_clients = yes compatibility_level = 3.9 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 lmtp_tls_CApath = $smtp_tls_CApath lmtp_tls_block_early_mail_reply = $smtp_tls_block_early_mail_reply lmtp_tls_chain_files = ${config_directory}/ssl/certs/server-lmtp-chain.pem lmtp_tls_ciphers = high lmtp_tls_exclude_ciphers = $smtp_tls_exclude_ciphers lmtp_tls_loglevel = $smtp_tls_loglevel lmtp_tls_mandatory_ciphers = high lmtp_tls_mandatory_exclude_ciphers = $smtp_tls_mandatory_exclude_ciphers lmtp_tls_mandatory_protocols = $smtp_tls_mandatory_protocols lmtp_tls_protocols = $smtp_tls_protocols lmtp_tls_security_level = secure lmtp_tls_wrappermode = yes mailbox_transport = lmtp:inet:imap.tachtler.net:24 mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, server.idmz.$mydomain myhostname = mx1.tachtler.net mynetworks = 127.0.0.0/32 10.0.0.0/24 192.168.0.0/24 [::1]/128 [fd00:0:0:10::]/64 [fe80:0:0:10::]/64 [fd00:0:0:192::]/64 myorigin = server.idmz.$mydomain proxy_interfaces = 88.217.171.167 recipient_canonical_maps = lmdb:${config_directory}/recipient_canonical_maps smtp_dns_support_level = dnssec smtp_tls_CApath = ${config_directory}/ssl/certs smtp_tls_block_early_mail_reply = yes smtp_tls_chain_files = ${config_directory}/ssl/certs/server-chain.pem smtp_tls_connection_reuse = yes smtp_tls_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtp_tls_loglevel = 1 smtp_tls_mandatory_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtp_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3 smtp_tls_protocols = >=TLSv1.2, <=TLSv1.3 smtp_tls_security_level = dane smtp_tls_session_cache_database = lmdb:${data_directory}/smtp_scache smtpd_end_of_data_restrictions = check_policy_service inet:imap.tachtler.net:12340 smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = $mydomain smtpd_sasl_path = inet:imap.tachtler.net:12345 smtpd_sasl_security_options = noanonymous, noplaintext smtpd_sasl_tls_security_options = noanonymous smtpd_sasl_type = dovecot smtpd_tls_CApath = ${config_directory}/ssl/certs smtpd_tls_ask_ccert = yes smtpd_tls_auth_only = yes smtpd_tls_chain_files = ${config_directory}/ssl/certs/server-chain.pem smtpd_tls_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtpd_tls_loglevel = 1 smtpd_tls_mandatory_exclude_ciphers = ECDHE-RSA-AES256-SHA384, ECDHE-RSA-AES256-SHA, DHE-RSA-AES256-GCM-SHA384, DHE-RSA-AES256-SHA256, DHE-RSA-AES256-SHA, ECDHE-RSA-CAMELLIA256-SHA384, DHE-RSA-CAMELLIA256-SHA256, DHE-RSA-CAMELLIA256-SHA, AES256-SHA256, AES256-SHA, CAMELLIA256-SHA256, CAMELLIA256-SHA, ECDHE-RSA-AES128-SHA256, ECDHE-RSA-AES128-SHA, DHE-RSA-AES128-SHA256, DHE-RSA-AES128-SHA, ECDHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA256, DHE-RSA-CAMELLIA128-SHA, AES128-SHA256, AES128-SHA, CAMELLIA128-SHA256, CAMELLIA128-SHA smtpd_tls_mandatory_protocols = >=TLSv1.2, <=TLSv1.3 smtpd_tls_protocols = >=TLSv1.2, <=TLSv1.3 smtpd_tls_received_header = yes smtpd_tls_security_level = may smtpd_tls_session_cache_database = lmdb:${data_directory}/smtpd_scache tls_append_default_CA = yes tls_preempt_cipherlist = yes tls_random_bytes = 255
HINWEIS - die Konfiguration des postfix/master
-Daemon/Dienst konnte korrekt gelesen werden, wenn die Konfiguration ohne Fehlermeldungen erscheint, was letztendlich zwar nicht bedeutet, das Sie auch korrekt ist, aber zumindest syntaktische Fehler ausschliesst !!!
Neustart
Zuerst sollte nun der postfix-Server mit nachfolgendem Befehle neu gestartet werden:
# systemctl restart postfix.service
Mit nachfolgendem Befehl kann der Status des Postfix-Servers abgefragt werden:
# systemctl status postfix.service ● postfix.service - Postfix Mail Transport Agent Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled; preset: > Active: active (running) since Mon 2024-12-30 19:45:17 CET; 7s ago Invocation: d54adbb5677b4df691177de4c31b9a10 Process: 4487 ExecStart=/usr/bin/postfix start (code=exited, status=0/SUCCE> Main PID: 4556 (master) Tasks: 3 (limit: 2315) Memory: 2.7M (peak: 4.1M) CPU: 263ms CGroup: /system.slice/postfix.service ├─4556 /usr/lib/postfix/bin/master -w ├─4557 pickup -l -t unix -u └─4558 qmgr -l -t unix -u Dec 30 19:45:16 server systemd[1]: Starting Postfix Mail Transport Agent... Dec 30 19:45:17 server postfix[4554]: postfix/postlog: starting the Postfix mai> Dec 30 19:45:17 server postfix/postfix-script[4554]: starting the Postfix mail > Dec 30 19:45:17 server postfix/master[4556]: daemon started -- version 3.9.1, c> Dec 30 19:45:17 server systemd[1]: Started Postfix Mail Transport Agent.
Nachfolgender Befehl listet die IP-Adressen und die Ports auf, auf denen der Postfix-Server lauscht:
# ss -taubenp | grep postfix tcp LISTEN 0 100 0.0.0.0:465 0.0.0.0:* users:(("master",pid=4556,fd=25)) ino:57586 sk:b cgroup:/system.slice/postfix.service <-> tcp LISTEN 0 100 0.0.0.0:25 0.0.0.0:* users:(("master",pid=4556,fd=13)) ino:57571 sk:c cgroup:/system.slice/postfix.service <-> tcp LISTEN 0 100 0.0.0.0:587 0.0.0.0:* users:(("master",pid=4556,fd=21)) ino:57580 sk:e cgroup:/system.slice/postfix.service <-> tcp LISTEN 0 100 [::]:465 [::]:* users:(("master",pid=4556,fd=26)) ino:57587 sk:12 cgroup:/system.slice/postfix.service v6only:1 <-> tcp LISTEN 0 100 [::]:25 [::]:* users:(("master",pid=4556,fd=14)) ino:57572 sk:13 cgroup:/system.slice/postfix.service v6only:1 <-> tcp LISTEN 0 100 [::]:587 [::]:* users:(("master",pid=4556,fd=22)) ino:57581 sk:16 cgroup:/system.slice/postfix.service v6only:1 <->
Hier geht es weiter … / To be continued …