Beide Seiten der vorigen RevisionVorhergehende ÜberarbeitungNächste Überarbeitung | Vorhergehende ÜberarbeitungNächste ÜberarbeitungBeide Seiten der Revision |
tachtler:postfix_centos_7 [2015/10/05 16:06] – [check_sender_access] klaus | tachtler:postfix_centos_7 [2022/06/08 17:47] – [smtpd_recipient_restrictions] klaus |
---|
| |
==== Paket postfix installieren ==== | ==== Paket postfix installieren ==== |
| |
| Nach erfolgreicher Einbindung des **Drittanbieter-Repository** |
| * [[tachtler:mailserver.guru_centos_7|mailserver.guru CentOS 7]] |
| sind nachfolgende Anpassungen in den Konfigurationsdateien |
| * ''/etc/yum.repos.d/CentOS-Base.repo'' |
| noch erforderlich, um die Installation des [[http://www.postfix.org/|Postfix]] aus dem ''mailserver.guru''-Repository durchführen zu können. |
| |
| === /etc/yum.repos.d/CentOS-Base.repo === |
| |
| (**__Nur relevanter Ausschnitt__**) |
| <code bash> |
| [base] |
| name=CentOS-$releasever - Base |
| mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra |
| #baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/ |
| gpgcheck=1 |
| gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 |
| priority=1 |
| exclude=postfix,postfix-*,dovecot |
| </code> |
| |
| **__Erklärungen zur Anpassung__**: |
| |
| * <code>exclude=postfix,postfix-*</code> |
| |
| Herausnehmen des Pakets ''postfix'' und alle damit Verbundenen Pakete aus dem ''CentOS-Base''-Repository. |
| |
Nachdem das **Drittanbieter-Repository** | Nachdem das **Drittanbieter-Repository** |
* [[tachtler:mailserver.guru_centos_7|mailserver.guru CentOS 7]] | * [[tachtler:mailserver.guru_centos_7|mailserver.guru CentOS 7]] |
erfolgreich eingebunden wurde, kann mit nachfolgendem Befehl, das **__neuere__** ''rpm''-Paket - **''postfix''** installiert werden: | erfolgreich eingebunden und konfiguriert wurde, kann mit nachfolgendem Befehl, das **__neuere__** ''rpm''-Paket - **''postfix''** installiert werden: |
<code> | <code> |
# yum install postfix | # yum install postfix |
* <code>-A INPUT -p tcp --dport 465 -j ACCEPT</code> | * <code>-A INPUT -p tcp --dport 465 -j ACCEPT</code> |
* <code>-A INPUT -p tcp --dport 587 -j ACCEPT</code> | * <code>-A INPUT -p tcp --dport 587 -j ACCEPT</code> |
| * <code>-A INPUT -p tcp --dport 10025 -j ACCEPT</code> |
und hier der Befehl: | und hier der Befehl: |
<code> | <code> |
# iptables -I INPUT 6 -p tcp --dport 465 -j ACCEPT | # iptables -I INPUT 6 -p tcp --dport 465 -j ACCEPT |
# iptables -I INPUT 7 -p tcp --dport 587 -j ACCEPT | # iptables -I INPUT 7 -p tcp --dport 587 -j ACCEPT |
| # iptables -I INPUT 8 -p tcp --dport 10025 -j ACCEPT |
</code> | </code> |
| |
6 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 state NEW | 6 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 state NEW |
7 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587 state NEW | 7 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587 state NEW |
8 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited | 8 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10025 state NEW |
| 9 0 0 REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited |
| |
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) | Chain FORWARD (policy ACCEPT 0 packets, 0 bytes) |
</code> | </code> |
| |
Die neuen Zeilen sind an **Position 5 (INPUT)** bis **Position 7 (INPUT)** zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (**nur relevanter Ausschnitt**): | Die neuen Zeilen sind an **Position 5 (INPUT)** bis **Position 8 (INPUT)** zu sehen, hier nachfolgend zur Verdeutlichung noch einmal dargestellt (**nur relevanter Ausschnitt**): |
<code> | <code> |
... | ... |
6 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 state NEW | 6 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:465 state NEW |
7 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587 state NEW | 7 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:587 state NEW |
| 8 0 0 ACCEPT tcp -- eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10025 state NEW |
... | ... |
</code> | </code> |
</code> | </code> |
| |
[[http://www.postfix.org|Postfix]] wird sich an alle unter **''mydestination''** aufgelisteten Domains bzw. (**FQDN**) als final zuständig füheln und e-Mails annehmen, ohne diese an andere Mail-Server weiterzuleiten. | [[http://www.postfix.org|Postfix]] wird sich an alle unter **''mydestination''** aufgelisteten Domains bzw. (**FQDN**) als final zuständig fühlen und e-Mails annehmen, ohne diese an andere Mail-Server weiterzuleiten. |
| |
==== myorigin ==== | ==== myorigin ==== |
| |
Ergänzung für lokal erzeugte e-Mails, welche nur an eine User-ID adressiert sind z.B. ''root''. Dies es-M;ail werden z.B. via ''cron''-job erstellt. Dies ist immer dann problematisch, wenn **local erzeugte e-Mail, __nicht__ lokal zugestellt/weitergeleitet** werden! | Ergänzung für lokal erzeugte e-Mails, welche nur an eine User-ID adressiert sind z.B. ''root''. Diese e-Mail's werden z.B. via ''cron''-job erstellt. Dies ist immer dann problematisch, wenn **local erzeugte e-Mail, __nicht__ lokal zugestellt/weitergeleitet** werden! |
| |
^ Defaultwert ^ Neuer Wert ^ | ^ Defaultwert ^ Neuer Wert ^ |
| $mydomain = mx1.tachtler.net | **server60.idmz.$mydomain** | | | $myorigin = mx1.tachtler.net | **server60.idmz.$mydomain** | |
| |
Hier sollen **lokal erzeuge e-Mails**, **nicht** pauschal um $mydomain = mx1.tachtler.net erweitert werden, sondern es soll der **interne Servername**, hier ''server60.idmz.tachtler.net'' verwendet werden. | Hier sollen **lokal erzeuge e-Mails**, **nicht** pauschal um $mydomain = mx1.tachtler.net erweitert werden, sondern es soll der **interne Servername**, hier ''server60.idmz.tachtler.net'' verwendet werden. |
nausch.org reject_plaintext_session | nausch.org reject_plaintext_session |
</code> | </code> |
| |
| :!: **ERKLÄRUNG** - **''reject_plaintext_session'' verhindert den Aufbau von unverschlüsselten Verbindungen, bei __eingehenden e-Mails__** |
| |
:!: **HINWEIS** - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die **[TAB]**-Taste verwendet werden, es ist aber auch die Trennung durch **[Leerzeichen]** möglich! | :!: **HINWEIS** - Als Trennzeichen zwischen den beiden Einträgen, sollte am besten die **[TAB]**-Taste verwendet werden, es ist aber auch die Trennung durch **[Leerzeichen]** möglich! |
^ Information ^ Beschreibung ^ | ^ Information ^ Beschreibung ^ |
| Dokumentation | [[http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions]] \\ [[http://www.postfix.org/SMTPD_ACCESS_README.html]] | | | Dokumentation | [[http://www.postfix.org/postconf.5.html#smtpd_recipient_restrictions]] \\ [[http://www.postfix.org/SMTPD_ACCESS_README.html]] | |
| Defaultwert | <code>smtpd_relay_restrictions = </code> | | | Defaultwert | <code>smtpd_recipient_restrictions = </code> | |
| **Neuer Wert** | <code bash>smtpd_recipient_restrictions = | | **Neuer Wert** | <code bash>smtpd_recipient_restrictions = |
# RFC or important ROLE-Accounts - Whitelisting - like: postmaster, abuse. | # RFC or important ROLE-Accounts - Whitelisting - like: postmaster, abuse. |
# Permit all SASL authenticated users, or clients from mynetworks. | # Permit all SASL authenticated users, or clients from mynetworks. |
# Tachtler - disabled - permit_sasl_authenticated, | # Tachtler - disabled - permit_sasl_authenticated, |
# Tachtler - disabled - permit_mynetworks, | permit_mynetworks, |
# RBL and RHSBL checks. | # RBL and RHSBL checks. |
reject_rbl_client zen.spamhaus.org=127.0.0.10, | reject_rbl_client zen.spamhaus.org=127.0.0.10, |
Fortfahren mit der Annahme der e-Mail, wenn der Client erfolgreich über das RFC-4954 (AUTH) Protokoll authentifiziert ist. | Fortfahren mit der Annahme der e-Mail, wenn der Client erfolgreich über das RFC-4954 (AUTH) Protokoll authentifiziert ist. |
| |
* <code># Tachtler - disabled - permit_mynetworks</code> | * <code>permit_mynetworks</code> |
| |
:!: **HINWEIS** - Abgedeckt durch die ''smtpd_relay_restrictions''. | :!: **HINWEIS** - Abgedeckt durch die ''smtpd_relay_restrictions'', ausser bei lokaler Einlieferung! |
| |
Fortfahren mit der Annahme der e-Mail, wenn die IP-Adresse des Clients in ''mynetworks'' enthalten ist. | Fortfahren mit der Annahme der e-Mail, wenn die IP-Adresse des Clients in ''mynetworks'' enthalten ist. |
| |
:!: **WICHTIG** - **Damit Änderungen allen Konfigurationsdateien wirksam werden, ist ein [[http://www.postfix.org|Postfix]] ''restart'' erforderlich!** | :!: **WICHTIG** - **Damit Änderungen allen Konfigurationsdateien wirksam werden, ist ein [[http://www.postfix.org|Postfix]] ''restart'' erforderlich!** |
| |
| :!: **WICHTIG** - **Nachfolgende beide Befehle können bzw. sollten nicht im __laufenden Betrieb__ ausgeführt werden!** (Evtl. zur Inhalt Einsicht die Datei vorher an einen anderen Speicherort kopieren) |
| |
Um den Inhalt der ''address_verify_map'' **einsehen zu können**, kann nachfolgender Befehl genutzt werden: | Um den Inhalt der ''address_verify_map'' **einsehen zu können**, kann nachfolgender Befehl genutzt werden: |
| **Neuer Wert** | <code>plaintext_reject_code = 550</code> | | | **Neuer Wert** | <code>plaintext_reject_code = 550</code> | |
| Beschreibung | Der numerische Postfix SMTP-Server-Antwortcode, wenn eine Anforderung von der ''reject_plaintext_session'' Einschränkung abgelehnt wird. | | | Beschreibung | Der numerische Postfix SMTP-Server-Antwortcode, wenn eine Anforderung von der ''reject_plaintext_session'' Einschränkung abgelehnt wird. | |
| interner Link | | | | interner Link | [[tachtler:postfix_centos_7#check_sender_access|Postfix CentOS 7 - Restrictions-Konfigurationen - check_sender_access]] | |
| |
==== smtpd_tls_ask_ccert ==== | ==== smtpd_tls_ask_ccert ==== |
| Defaultwert | <code>smtpd_tls_CAfile = </code><code>smtp_tls_CAfile = </code><code>lmtp_tls_CAfile = </code> | | | Defaultwert | <code>smtpd_tls_CAfile = </code><code>smtp_tls_CAfile = </code><code>lmtp_tls_CAfile = </code> | |
| **Neuer Wert** | <code>smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt</code><code>smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt</code><code>lmtp_tls_CAfile = $smtp_tls_CAfile</code> | | | **Neuer Wert** | <code>smtpd_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt</code><code>smtp_tls_CAfile = /etc/pki/tls/certs/ca-bundle.crt</code><code>lmtp_tls_CAfile = $smtp_tls_CAfile</code> | |
| Beschreibung | Eine Datei mit im (PEM-Format) abgelegten ROOT-CA-Zertifikate der vertrauenswürdigen Stammzertifizierungsstellen, entweder Remote-SMTP-Client-Zertifikate oder Zwischen ROOT-CA-Zertifikate. \\ \\ :!: **HINWEIS** - **Hier können auch eigene ROOT-Zeritifikate hinterlegt werden!** | | | Beschreibung | Eine Datei mit im (PEM-Format) abgelegten ROOT-CA-Zertifikate der vertrauenswürdigen Stammzertifizierungsstellen, entweder Remote-SMTP-Client-Zertifikate oder Zwischen ROOT-CA-Zertifikate. | |
| |
==== smtpd_tls_cert_file ==== | ==== smtpd_tls_cert_file ==== |
| **Neuer Wert** | <code>smtpd_tls_key_file = /etc/pki/postfix/private/mail.tachtler.net.key</code> | | | **Neuer Wert** | <code>smtpd_tls_key_file = /etc/pki/postfix/private/mail.tachtler.net.key</code> | |
| Beschreibung | Die Datei mit dem Schlüssel im PEM-Format. | | | Beschreibung | Die Datei mit dem Schlüssel im PEM-Format. | |
| |
| ==== (l|s)mtp(d)_tls_ciphers ==== |
| |
| ^ Information ^ Beschreibung ^ |
| | Dokumentation | [[http://www.postfix.org/postconf.5.html#smtpd_tls_ciphers]] \\ [[http://www.postfix.org/postconf.5.html#smtp_tls_ciphers]] \\ [[http://www.postfix.org/postconf.5.html#lmtp_tls_ciphers]] | |
| | Defaultwert | <code>smtpd_tls_ciphers = medium</code><code>smtp_tls_ciphers = medium</code><code>lmtp_tls_ciphers = medium</code> | |
| | **Neuer Wert** | <code>smtpd_tls_ciphers = high</code><code>smtp_tls_ciphers = high</code><code>lmtp_tls_mandatory_ciphers = $smtp_tls_ciphers</code> | |
| | Beschreibung | Der Standard TLS Verschlüsselungsgrad. | |
| |
| Nachfolgende Tabelle spezifiziert die einzelnen Verschlüsselungsgrad Einstellungen: |
| |
| ^ Verschlüsselungsgrad ^ Parameter ^ |
| | ''export'' | ''tls_export_cipherlist = aNULL:-aNULL:ALL:+RC4:@STRENGTH'' | |
| | ''low'' | ''tls_low_cipherlist = aNULL:-aNULL:ALL:!EXPORT:+RC4:@STRENGTH'' | |
| | ''medium'' | ''tls_medium_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:+RC4:@STRENGTH''| |
| | ''high'' | ''tls_high_cipherlist = aNULL:-aNULL:ALL:!EXPORT:!LOW:!MEDIUM:+RC4:@STRENGTH''| |
| | ''null'' | ''tls_null_cipherlist = eNULL:!aNULL''| |
| |
| Alle Verschlüsselungsgrad Einstellungen haben eine Parameter in dem die verschiedenen Verschlüsselungsarten festgelegt werden können, **diese sollten jedoch __nicht__ abgeändert werden**! |
| |
==== smtpd_tls_dh512_param_file smtpd_tls_dh1024_param_file ==== | ==== smtpd_tls_dh512_param_file smtpd_tls_dh1024_param_file ==== |
| ''strong'' | Verwenden EECDH mit 128 Bit. Dies ist der "Best-Practice"-Kompromiss zwischen Sicherheit und Recheneffizienz. | | | ''strong'' | Verwenden EECDH mit 128 Bit. Dies ist der "Best-Practice"-Kompromiss zwischen Sicherheit und Recheneffizienz. | |
| ''ultra'' | Verwenden EECDH mit 192 Bit. Der Rechenaufwand beträgt etwa das doppelte wie bei 128 Bit. Abgesehen von den erheblichen Fortschritten, bei Angriffen auf elliptischen Kurven Kryptosysteme, ist die "starke" Kurve ausreichend, für die meisten Anwender. | | | ''ultra'' | Verwenden EECDH mit 192 Bit. Der Rechenaufwand beträgt etwa das doppelte wie bei 128 Bit. Abgesehen von den erheblichen Fortschritten, bei Angriffen auf elliptischen Kurven Kryptosysteme, ist die "starke" Kurve ausreichend, für die meisten Anwender. | |
| |
| ==== (l|s)mtp(d)_tls_exclude_ciphers ==== |
| |
| ^ Information ^ Beschreibung ^ |
| | Dokumentation | [[http://www.postfix.org/postconf.5.html#smtpd_tls_exclude_ciphers]] \\ [[http://www.postfix.org/postconf.5.html#smtp_tls_exclude_ciphers]] \\ [[http://www.postfix.org/postconf.5.html#lmtp_tls_exclude_ciphers]] | |
| | Defaultwert | <code>smtpd_tls_exclude_ciphers = </code><code>smtp_tls_mandatory_exclude_ciphers = </code><code>lmtp_tls_mandatory_exclude_ciphers = </code> | |
| | **Neuer Wert** | <code>smtpd_tls_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDB3-SHA, KRB5-DES, CBC3-SHA</code><code>smtp_tls_mandatory_exclude_ciphers = aNULL, eNULL, EXPORT, DES, RC4, MD5, PSK, aECDH, EDH-DSS-DES-CBC3-SHA, EDH-RSA-DES-CDB3-SHA, KRB5-DES, CBC3-SHA</code><code>lmtp_tls_mandatory_exclude_ciphers = $smtp_tls_exclude_ciphers</code> | |
| | Beschreibung | Liste der Chiffren oder Verschlüsselungstypen die von den SMTP-Server Sicherheitsstufen auszuschließen sind. | |
| |
| :!: **HINWEIS** - Siehe auch nachfolgenden externen Link: |
| * [[https://weakdh.org/sysadmin.html|Guide to Deploying Diffie-Hellman for TLS]] |
| |
==== (l|s)mtp(d)_tls_loglevel ==== | ==== (l|s)mtp(d)_tls_loglevel ==== |
# openssl s_client -starttls smtp -connect mx01.nausch.org:25 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin | # openssl s_client -starttls smtp -connect mx01.nausch.org:25 < /dev/null 2>/dev/null | openssl x509 -fingerprint -noout -in /dev/stdin |
SHA1 Fingerprint=F6:A2:58:4C:CA:1F:52:68:69:FF:87:73:CF:62:40:80:87:AC:21:B2 | SHA1 Fingerprint=F6:A2:58:4C:CA:1F:52:68:69:FF:87:73:CF:62:40:80:87:AC:21:B2 |
| </code> |
| |
| ==== (l|s)mtp_dns_support_level ==== |
| |
| ^ Information ^ Beschreibung ^ |
| | Dokumentation | [[http://www.postfix.org/postconf.5.html#smtp_dns_support_level]] \\ [[http://www.postfix.org/postconf.5.html#smtp_dns_support_level]] | |
| | Defaultwert | <code>smtp_dns_support_level =</code><code>lmtp_dns_support_level =</code> | |
| | **Neuer Wert** | <code>smtp_dns_support_level = dnssec</code><code>lmtp_dns_support_level = dnssec</code> | |
| | Beschreibung | Legt für die Kommunikation von [[http://www.postfix.com|Postfix]] mit anderen Clients/Host fest, ob die Verschlüsselung **''dane, dane-only''**, die für diesen Client/Host geprüft werden kann. | |
| | interner Link | [[tachtler:postfix_centos_7#l_s_mtp_tls_policy_maps|Postfix CentOS 7 - TLS-Policy-Konfigurieren - (l|s)mtp_tls_policy_maps]] \\ [[tachtler:postfix_centos_7#l_s_mtp_tls_fingerprint_digest|Postfix CentOS 7 - TLS-Policy-Konfigurieren - (l|s)mtp_tls_fingerprint_digest]] | |
| |
| Falls in den **neue Konfigurationsdateien** |
| * ''/etc/postfix/smtp_tls_policy_maps'' |
| * ''/etc/postfix/lmtp_tls_policy_maps'' |
| ein Eintrag mit |
| * **''dane''** oder |
| * **''dane-only''** |
| enthalten ist, wie nachfolgend dargestellt (**hier nur ''/etc/postfix/smtp_tls_policy_maps''**): |
| <code> |
| # nausch.org fingerprint match=F6:A2:58:4C:CA:1F:52:68:69:FF:87:73:CF:62:40:80:87:AC:21:B2 |
| nausch.org dane-only |
| </code> |
| |
| **MUSS zwingend** auch |
| * ''smtp_dns_support_level = dnssec'' bzw. |
| * ''lmtp_dns_support_level = dnssec'' |
| gesetzt werden, da sonst nachfolgende Fehlermeldung im LOG erscheint (**nur relevanter Ausschnitt**): |
| <code> |
| ... |
| ...warning: nausch.org: dane-only configured with dnssec lookups disabled |
| ...warning: TLS policy lookup for nausch.org/mx01.nausch.org: client TLS configuration problem |
| ... |
</code> | </code> |
| |
| |
* Interner **Link** zu: [[tachtler:postfix_centos_7_-_postscreen_einsetzen|Postfix CentOS 7 - Postscreen einsetzen]] | * Interner **Link** zu: [[tachtler:postfix_centos_7_-_postscreen_einsetzen|Postfix CentOS 7 - Postscreen einsetzen]] |
| |
| ==== Postfix CentOS 7 - AMaViS anbinden (amavisd-milter) ==== |
| |
| * Interner **Link** zu: [[tachtler:postfix_centos_7_-_amavis_anbinden_amavisd-milter|Postfix CentOS 7 - AMaViS anbinden (amavisd-milter)]] |
| |