ubuntu:postfix_mailrelay
Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
| ubuntu:postfix_mailrelay [2019/06/01 12:51] – angelegt Sebastian Hetzel | ubuntu:postfix_mailrelay [2019/06/22 10:39] (aktuell) – [Logs nur nach /var/log/mail.log] Schreibfehler im Logfile Sebastian Hetzel | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| ====== Ubuntu: Postfix als Mailrelay ====== | ====== Ubuntu: Postfix als Mailrelay ====== | ||
| - | ===== Installation der Pakete ===== | + | Eine Kurzanleitungen, |
| + | |||
| + | * Ausgehende Mails auf Viren überprüfen | ||
| + | * Loginverzögerung (Anvil) | ||
| + | * SMTP über Authentifizierung (Sasl über sasldb) | ||
| + | * Virtual users and domains | ||
| + | * Chroot | ||
| + | * DKIM-Signierung ausgehender Mails | ||
| + | * SRS | ||
| + | |||
| + | |||
| + | ===== Postfix-Installation | ||
| + | |||
| + | < | ||
| + | # aptitude install postfix postfix-doc | ||
| + | </ | ||
| + | |||
| + | Dann implementieren wir die Postfix-Programmkonfiguration. Zuvor definieren wir den " | ||
| + | |||
| + | <file |h / | ||
| + | meine-maildomain.de | ||
| + | </ | ||
| + | |||
| + | <note tip> | ||
| + | Debian system contains the visible mail name of the system. | ||
| + | by many different programs, usually programs that wish to send or relay | ||
| + | mail, and need to know the name of the system. | ||
| + | |||
| + | The file contains only one line describing the fully qualified | ||
| + | name that the program wishing to get the mail name should use (that is, | ||
| + | **everything after the @**). | ||
| + | </ | ||
| + | |||
| + | <file |h / | ||
| + | # See / | ||
| + | # Debian specific: | ||
| + | # line of that file to be used as the name. The Debian default | ||
| + | # is / | ||
| + | |||
| + | myorigin = / | ||
| + | |||
| + | |||
| + | ### Gerneral settings | ||
| + | |||
| + | # | ||
| + | # Hide the OS giving more security | ||
| + | smtpd_banner = ESMTP $mail_name | ||
| + | biff = no | ||
| + | |||
| + | # appending .domain is the MUA's job. | ||
| + | append_dot_mydomain = no | ||
| + | |||
| + | # Uncomment the next line to generate " | ||
| + | delay_warning_time = 4h | ||
| + | |||
| + | readme_directory = / | ||
| + | |||
| + | |||
| + | # TLS parameters | ||
| + | smtpd_tls_cert_file=/ | ||
| + | smtpd_tls_key_file=/ | ||
| + | smtpd_tls_CAfile=/ | ||
| + | smtpd_use_tls=yes | ||
| + | # | ||
| + | smtpd_tls_loglevel = 1 | ||
| + | smtpd_tls_received_header = yes | ||
| + | smtpd_tls_session_cache_database = btree: | ||
| + | smtp_tls_session_cache_database = btree: | ||
| + | smtpd_tls_session_cache_timeout = 3600s | ||
| + | tls_random_source = dev:/ | ||
| + | tls_random_prng_update_period = 3600s | ||
| + | |||
| + | # See / | ||
| + | # information on enabling SSL in the smtp client. | ||
| + | |||
| + | |||
| + | ### System settings | ||
| + | |||
| + | myhostname = smtp.meine-maildomain.de | ||
| + | alias_maps = hash:/ | ||
| + | alias_database = hash:/ | ||
| + | mydestination = hostname.mydomain.de, | ||
| + | relayhost = | ||
| + | mynetworks = 127.0.0.0/8 [:: | ||
| + | mailbox_size_limit = 0 | ||
| + | recipient_delimiter = + | ||
| + | inet_interfaces = all | ||
| + | html_directory = / | ||
| + | |||
| + | |||
| + | ## Outgoing mail settings | ||
| + | |||
| + | smtp_bind_address = 190.180.170.61 | ||
| + | smtp_helo_name = smtp1.meine-maildomain.de | ||
| + | transport_maps = hash:/ | ||
| + | |||
| + | |||
| + | ## Incoming mail settings | ||
| + | |||
| + | smtpd_reject_unlisted_sender = yes | ||
| + | smtpd_helo_required = yes | ||
| + | message_size_limit = 102400000 | ||
| + | |||
| + | |||
| + | ## Auth SASL settings | ||
| + | |||
| + | smtpd_sasl_auth_enable = yes | ||
| + | smtpd_sasl_type = cyrus | ||
| + | smtpd_sasl_path = smtpd | ||
| + | broken_sasl_auth_clients = yes | ||
| + | smtp_sasl_security_options = noanonymous | ||
| + | smtpd_sasl_local_domain = | ||
| + | smtpd_sasl_exceptions_networks = $mynetworks | ||
| + | smtpd_sender_login_maps = hash:/ | ||
| + | |||
| + | smtpd_recipient_restrictions = | ||
| + | check_recipient_access btree:/ | ||
| + | reject_invalid_helo_hostname, | ||
| + | reject_unauth_pipelining, | ||
| + | reject_non_fqdn_sender, | ||
| + | reject_non_fqdn_recipient, | ||
| + | reject_unknown_sender_domain, | ||
| + | reject_unknown_recipient_domain, | ||
| + | permit_sasl_authenticated, | ||
| + | permit_mynetworks, | ||
| + | # | ||
| + | # | ||
| + | reject_unauth_destination, | ||
| + | permit | ||
| + | |||
| + | smtpd_sender_restrictions = | ||
| + | check_sender_access regexp:/ | ||
| + | permit_mynetworks | ||
| + | permit_sasl_authenticated | ||
| + | permit_tls_clientcerts | ||
| + | # For other mail use amavis filtering on port 10024 (skips DKIM signing) | ||
| + | check_sender_access regexp:/ | ||
| + | |||
| + | |||
| + | ## Anvil | ||
| + | |||
| + | anvil_status_update_time = 1m | ||
| + | anvil_rate_time_unit = 10s | ||
| + | smtpd_client_event_limit_exceptions = 127.0.0.1 | ||
| + | smtpd_client_connection_rate_limit = 5 | ||
| + | smtpd_client_connection_count_limit = 15 | ||
| + | # | ||
| + | </ | ||
| + | |||
| + | Im Anschluss erfolgt die Postfix-Dienstkonfiguration. | ||
| + | Sie enthält spezielle Konfigurationen, | ||
| + | |||
| + | <note tip> | ||
| + | |||
| + | <file |h / | ||
| + | [...] | ||
| + | pickup | ||
| + | -o content_filter= | ||
| + | -o receive_override_options=no_header_body_checks | ||
| + | [...] | ||
| + | |||
| + | # Incoming mail smtp.mydomain.de | ||
| + | 190.180.170.60: | ||
| + | -o content_filter=smtp-amavis: | ||
| + | -o receive_override_options=no_address_mappings | ||
| + | |||
| + | # Outgoing mail backup ip, if default ip is blacklisted | ||
| + | smtp-backup unix - | ||
| + | -o smtp_helo_name=smtp2.meine-maildomain.de | ||
| + | -o smtp_bind_address=190.180.170.62 | ||
| + | |||
| + | # Amavisd-new | ||
| + | smtp-amavis unix - | ||
| + | -o smtp_data_done_timeout=1200 | ||
| + | -o smtp_send_xforward_command=yes | ||
| + | -o disable_dns_lookups=yes | ||
| + | -o max_use=20 | ||
| + | |||
| + | 127.0.0.1: | ||
| + | -o content_filter= | ||
| + | -o local_recipient_maps= | ||
| + | -o relay_recipient_maps= | ||
| + | -o smtpd_restriction_classes= | ||
| + | -o smtpd_delay_reject=no | ||
| + | -o smtpd_client_restrictions=permit_mynetworks, | ||
| + | -o smtpd_helo_restrictions= | ||
| + | -o smtpd_sender_restrictions= | ||
| + | -o smtpd_recipient_restrictions=permit_mynetworks, | ||
| + | -o smtpd_data_restrictions=reject_unauth_pipelining | ||
| + | -o mynetworks=127.0.0.0/ | ||
| + | -o strict_rfc821_envelopes=yes | ||
| + | -o smtpd_error_sleep_time=0 | ||
| + | -o smtpd_soft_error_limit=1001 | ||
| + | -o smtpd_hard_error_limit=1000 | ||
| + | |||
| + | </ | ||
| + | |||
| + | Die Aliases-Datei sollte noch angepasst werden: | ||
| + | |||
| + | <file | / | ||
| + | # See man 5 aliases for format | ||
| + | postmaster: | ||
| + | clamav: root | ||
| + | virusalert: root | ||
| + | root: postmaster@meine-maildomain.de | ||
| + | </ | ||
| + | |||
| + | Diese wird mittels des Befehls newaliases aktiviert: | ||
| + | |||
| + | < | ||
| + | |||
| + | ==== Logs nur nach / | ||
| + | |||
| + | <file | / | ||
| + | # Default rules for rsyslog. | ||
| + | # | ||
| + | # For more information see rsyslog.conf(5) and / | ||
| + | |||
| + | # | ||
| + | # First some standard log files. | ||
| + | # | ||
| + | auth, | ||
| + | *.*; | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | Den Dienst neustarten: | ||
| + | < | ||
| + | ===== Authentifizierungsmechanismus ===== | ||
| + | |||
| + | Die Berechtigung für den Mailversand vergibt die Software SASL. | ||
| + | |||
| + | Folgende Pakete werden benötigt: | ||
| + | |||
| + | < | ||
| + | # aptitude install libsasl2-2 sasl2-bin libsasl2-modules | ||
| + | </ | ||
| + | |||
| + | Die Anbindung haben wir bereits in der '' | ||
| + | |||
| + | Hier nochmals die wichtigsten Direktiven: | ||
| + | |||
| + | < | ||
| + | [...] | ||
| + | # Auth über Cyrus-SASL aktivieren | ||
| + | smtpd_sasl_auth_enable = yes | ||
| + | |||
| + | # Nicht standardkonforme Clients erlauben (Outlook & Co.) | ||
| + | broken_sasl_auth_clients = yes | ||
| + | |||
| + | # Nur User Mail versenden lassen, die in SASL-DB stehen | ||
| + | smtp_sasl_security_options = noanonymous | ||
| + | |||
| + | # Standard-Realm für kurze Benutzernamen (optional; erst ab SASL 2.1.19) | ||
| + | smtpd_sasl_local_domain = | ||
| + | |||
| + | # Authentifizierten Clients das Relayen erlauben (Schablone beachten!!) | ||
| + | smtpd_recipient_restrictions = | ||
| + | ... | ||
| + | permit_sasl_authenticated | ||
| + | ... | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | Wenn SASL in einer Chroot-Umgebung laufen soll (zusammen mit Postfix), muss diese für SASL erst noch angelegt werden. Dies ist nicht Bestandteil des Pakets von Ubuntu. | ||
| + | |||
| + | < | ||
| + | # mkdir -p / | ||
| + | # chmod 755 / | ||
| + | # chgrp postfix / | ||
| + | # service saslauthd restart | ||
| + | </ | ||
| + | |||
| + | SASL selbst muss noch eingestellt werden. Dies geschieht in der Datei '' | ||
| + | |||
| + | <file |h / | ||
| + | log_level: 3 | ||
| + | pwcheck_method: | ||
| + | auxprop_plugin: | ||
| + | mech_list: plain login | ||
| + | </ | ||
| + | |||
| + | Wir haben definiert, dass Sasl über den SASL-Dämon angesprochen wird. Dieser greift auf eine Berkley-DB (SASLDB) zurück. Erlaubt sind Authenitifizierungen über Plain Text sowie Login. | ||
| + | |||
| + | Jetzt sollte der Dämon noch für den automatischen Start konfiguriert werden. Des Weiteren müssen dem Dienst auch die Authentifizierungsmethoden bekannt sein. | ||
| + | |||
| + | <note warning> | ||
| + | |||
| + | <file |h / | ||
| + | # | ||
| + | # Settings for saslauthd daemon | ||
| + | # Please read / | ||
| + | # | ||
| + | |||
| + | # Should saslauthd run automatically on startup? (default: no) | ||
| + | START=yes | ||
| + | [...] | ||
| + | # Example: MECHANISMS=" | ||
| + | # | ||
| + | MECHANISMS=" | ||
| + | [...] | ||
| + | OPTIONS=" | ||
| + | </ | ||
| + | |||
| + | ===== Amavisd-new als Mailscanner ausgehender Post ===== | ||
| + | |||
| + | Folgende | ||
| + | |||
| + | < | ||
| + | # aptitude install amavisd-new clamav clamav-daemon | ||
| + | </ | ||
| + | |||
| + | Die **Konfiguration** geschieht über mehrere Dateien. Hier zunächst ein Überblick über diese: | ||
| + | |||
| + | < | ||
| + | drwxr-xr-x 2 root root 4096 Dec 9 21:42 ./ | ||
| + | drwxr-xr-x 4 root root 4096 Dec 9 21:42 ../ | ||
| + | -rw-r--r-- 1 root root 1653 Apr 8 2011 01-debian | ||
| + | -rw-r--r-- 1 root root 705 Aug 17 2011 05-domain_id | ||
| + | -rw-r--r-- 1 root root 429 Apr 8 2011 05-node_id | ||
| + | -rw-r--r-- 1 root root 20693 Apr 8 2011 15-av_scanners | ||
| + | -rw-r--r-- 1 root root 715 Aug 18 2011 15-content_filter_mode | ||
| + | -rw-r--r-- 1 root root 9669 Aug 21 2011 20-debian_defaults | ||
| + | -rw-r--r-- 1 root root 649 Apr 8 2011 21-ubuntu_defaults | ||
| + | -rw-r--r-- 1 root root 573 Apr 8 2011 25-amavis_helpers | ||
| + | -rw-r--r-- 1 root root 2130 Apr 8 2011 30-template_localization | ||
| + | -rw-r--r-- 1 root root 1567 Apr 8 2011 40-policy_banks | ||
| + | -rw-r--r-- 1 root root 1602 May 14 2012 50-user | ||
| + | </ | ||
| + | |||
| + | Die wichtigste Datei ist die '' | ||
| + | |||
| + | < | ||
| + | use strict; | ||
| + | |||
| + | # | ||
| + | # Place your configuration directives here. They will override those in | ||
| + | # earlier files. | ||
| + | # | ||
| + | # See / | ||
| + | # the directives you can use in this file | ||
| + | # | ||
| + | |||
| + | $myhostname = " | ||
| + | |||
| + | ## DKIM signing | ||
| + | $enable_dkim_verification = 1; # enable DKIM signatures verification | ||
| + | $enable_dkim_signing = 1; # load DKIM signing code, | ||
| + | |||
| + | dkim_key(' | ||
| + | |||
| + | @dkim_signature_options_bysender_maps = ( | ||
| + | { ' | ||
| + | |||
| + | # switch policy bank to ' | ||
| + | $interface_policy{' | ||
| + | $policy_bank{' | ||
| + | originating => 1, # indicates client is ours, allows signing | ||
| + | # force MTA to convert mail to 7-bit before DKIM signing | ||
| + | # to avoid later conversions which could destroy signature: | ||
| + | smtpd_discard_ehlo_keywords => [' | ||
| + | }; | ||
| + | |||
| + | # | ||
| + | @local_domains_maps = (' | ||
| + | |||
| + | $virus_admin = ' | ||
| + | |||
| + | @inet_acl = qw(127.0.0.1 [::1] 213.240.143.77 213.240.143.78); | ||
| + | $inet_socket_bind = ' | ||
| + | $inet_socket_port = [10024, | ||
| + | |||
| + | ## Own policy, not default | ||
| + | |||
| + | # | ||
| + | # | ||
| + | # }; | ||
| + | $smtp_connection_cache_enable = 0; | ||
| + | |||
| + | # | ||
| + | 1; # ensure a defined return | ||
| + | </ | ||
| + | |||
| + | In der '' | ||
| + | |||
| + | < | ||
| + | [...] | ||
| + | $X_HEADER_LINE = " | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | In der '' | ||
| + | |||
| + | < | ||
| + | [...] | ||
| + | @bypass_virus_checks_maps = ( | ||
| + | | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | Berechtigungen setzen, damit Clamav auch auf die Mails von Amavis zugreifen kann: | ||
| + | |||
| + | < | ||
| + | # adduser clamav amavis | ||
| + | </ | ||
| + | |||
| + | ==== RAM-Disk für bessere Performance ==== | ||
| + | |||
| + | <file | / | ||
| + | [...] | ||
| + | tmpfs / | ||
| + | </ | ||
| + | |||
| + | Die uid sowie die gid müssen durch die entsprechenden Werte des amavis-Dienstusers ersetzt werden! | ||
| + | |||
| + | < | ||
| + | # id amavis | ||
| + | uid=108(amavis) gid=117(amavis) groups=117(amavis) | ||
| + | </ | ||
| + | |||
| + | Anschließend müssen die Ordnerrechte noch entsprechend gesetzt werden: | ||
| + | |||
| + | < | ||
| + | # chown -R amavis: | ||
| + | </ | ||
| + | ==== DKIM ==== | ||
| + | Den DKIM-Key erzeugen: | ||
| + | |||
| + | < | ||
| + | # mkdir -p / | ||
| + | # amavisd-new genrsa / | ||
| + | </ | ||
| + | |||
| + | Den Key testen und in die DNS-Zone eintragen: | ||
| + | |||
| + | < | ||
| + | # amavisd-new showkeys | ||
| + | ; key#1, domain meine-maildomain.de, | ||
| + | mail._domainkey.meine-maildomain.de. | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | " | ||
| + | |||
| + | # amavisd-new testkeys | ||
| + | TESTING#1: mail._domainkey.meine-maildomain.de | ||
| + | </ | ||
| + | |||
| + | Nun den Dienst neu starten und die Änderungen übernehmen: | ||
| + | |||
| + | < | ||
| + | # service amavis restart | ||
| + | </ | ||
| + | |||
| + | ===== Sender Rewriting Scheme (SRS) ===== | ||
| + | |||
| + | Voraussetzung für die Installation von **postsrsd** ist, dass der eingesetzte Postfix TCP-Maps unterstützt: | ||
| + | |||
| + | < | ||
| + | # postconf -d | grep mail_version && postconf -m | ||
| + | mail_version = 3.3.0 | ||
| + | milter_macro_v = $mail_name $mail_version | ||
| + | btree | ||
| + | cidr | ||
| + | environ | ||
| + | fail | ||
| + | hash | ||
| + | inline | ||
| + | internal | ||
| + | memcache | ||
| + | nis | ||
| + | pipemap | ||
| + | proxy | ||
| + | randmap | ||
| + | regexp | ||
| + | socketmap | ||
| + | static | ||
| + | tcp | ||
| + | texthash | ||
| + | unionmap | ||
| + | unix | ||
| + | </ | ||
| + | |||
| + | Taucht das Modul '' | ||
| + | |||
| + | < | ||
| + | # aptitude install postsrsd | ||
| + | </ | ||
| + | |||
| + | <file | / | ||
| + | [...] | ||
| + | # Local domain name. | ||
| + | # Addresses are rewritten to originate from this domain. The default value | ||
| + | # is taken from `postconf -h mydomain` and probably okay. | ||
| + | # | ||
| + | SRS_DOMAIN=meine-maildomain.de | ||
| + | [...] | ||
| + | </ | ||
| + | |||
| + | <file | / | ||
| + | [...] | ||
| + | sender_canonical_maps | ||
| + | sender_canonical_classes | ||
| + | recipient_canonical_maps | ||
| + | recipient_canonical_classes= envelope_recipient, | ||
| + | [...] | ||
| + | </ | ||
| < | < | ||
| - | # | + | # service postfix reload |
| </ | </ | ||
ubuntu/postfix_mailrelay.1559386314.txt.gz · Zuletzt geändert: von Sebastian Hetzel
