Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen Revision Vorhergehende Überarbeitung
Nächste Überarbeitung
Vorhergehende Überarbeitung
centos:mail_c7:mta_4 [03.11.2014 18:01. ] – [relocated] djangocentos:mail_c7:mta_4 [22.07.2020 20:13. ] (aktuell) – [Reject-Regeln] django
Zeile 15: Zeile 15:
 In der Vergangenheit, dokumentiert in den Konfigurationsbeispielen zu [[centos:mailserver:start|CentOS 5]] und [[centos:mail_c6:start|CentOS 6]], wurden bei den Konfigurationsbeispielen als Basis die Distributionsspezifischen Vorlagen verwendet. Rückblickend ist aber festzustellen, dass einige der (ungeübteren) Administratoren mit unter Schwierigkeiten sich zurecht zu finden, waren doch verschiedene Konfigurationsoptionen etwas verstreut in der //**/etc/postfix/main.cf**// verteilt. In der Vergangenheit, dokumentiert in den Konfigurationsbeispielen zu [[centos:mailserver:start|CentOS 5]] und [[centos:mail_c6:start|CentOS 6]], wurden bei den Konfigurationsbeispielen als Basis die Distributionsspezifischen Vorlagen verwendet. Rückblickend ist aber festzustellen, dass einige der (ungeübteren) Administratoren mit unter Schwierigkeiten sich zurecht zu finden, waren doch verschiedene Konfigurationsoptionen etwas verstreut in der //**/etc/postfix/main.cf**// verteilt.
  
-Wir werden daher bei den nun folgendem Beispiel zur Konfiguration unter **CentOS 7** einen, auf den ersten ungewöhnlichen Schritt unternehmen und die **main.cf** beiseite legen und eine eigene anlegenfolgende vier Schritte sind hierzu netwendig:+Wir werden daher bei den nun folgendem Beispiel zur Konfiguration unter **CentOS 7** einen, auf den ersten ungewöhnlichen Schritt unternehmen und die **main.cf** beiseite legen und eine eigene anlegenfolgende vier Schritte sind hierzu notwendig:
   - Wir stoppen den vorhandenen Postfix-SMTP-Server. <code> # systemctl stop postfix</code>   - Wir stoppen den vorhandenen Postfix-SMTP-Server. <code> # systemctl stop postfix</code>
   - Anschließend wechseln wir in das Konfigurationsverzeichnis //**/etc/postfix/**//. <code> # cd /etc/postfix</code>   - Anschließend wechseln wir in das Konfigurationsverzeichnis //**/etc/postfix/**//. <code> # cd /etc/postfix</code>
-  - Nun löschen oder verschien wir die nicht benötigten Dateien:+  - Nun löschen __oder__ verschieben wir die nicht benötigten Dateien:
     - **löschen** <code> # rm access canonical generic header_checks relocated virtual transport -f</code>     - **löschen** <code> # rm access canonical generic header_checks relocated virtual transport -f</code>
     - **verschieben** <code> # mkdir -p /etc/postfix/.orig/</code><code> # mv access canonical generic header_checks relocated virtual transport main.cf /etc/postfix/.orig/ -f</code>     - **verschieben** <code> # mkdir -p /etc/postfix/.orig/</code><code> # mv access canonical generic header_checks relocated virtual transport main.cf /etc/postfix/.orig/ -f</code>
Zeile 40: Zeile 40:
   #   #
  
-Wir werden später die einzelnen Konfigurationsoptionen strukturieren, d.h. zusammenfassen und jeweils bei den betreffenden Sectionen eintragen.+Wir werden später die einzelnen Konfigurationsoptionen strukturieren, d.h. zusammenfassen und jeweils bei den betreffenden Sektionen eintragen.
  
 ==== Installations- und Konfigurations Informationen ==== ==== Installations- und Konfigurations Informationen ====
Zeile 245: Zeile 245:
 # default: unbekannte Empfänger sollen abgewiesen und nicht mit einem # default: unbekannte Empfänger sollen abgewiesen und nicht mit einem
 #          temporären Fehler 450 abgewiesen werden. #          temporären Fehler 450 abgewiesen werden.
-unknown_local_recipient_reject_code = 550+# default: unknown_local_recipient_reject_code = 550 
 +#          unverified_recipient_reject_code = 450 
 +#unverified_recipient_reject_code = 577
  
 # Django : 2014-10-15 - Soll bei einem unbekanntem Ziel der genaue Tabellenname # Django : 2014-10-15 - Soll bei einem unbekanntem Ziel der genaue Tabellenname
Zeile 273: Zeile 275:
 </code> </code>
 ==== Routing ==== ==== Routing ====
-In der Section **ROUTING - WEITERLEITEN VON NACHRICHTEN AN DAS EIGENTLICHE ZIEL** legen wir fest, wo und wie die einzelnen Zielserver erreichbar sind, an die unser Postfix SMTP-Server seine Nachrichten weiterleiten soll. +In der Sektion **ROUTING - WEITERLEITEN VON NACHRICHTEN AN DAS EIGENTLICHE ZIEL** legen wir fest, wo und wie die einzelnen Zielserver erreichbar sind, an die unser Postfix SMTP-Server seine Nachrichten weiterleiten soll. 
 <WRAP center round tip> <WRAP center round tip>
-Auch wenn es für einen kleinen Server erst einmal als Overkill erscheinen mag, den IMAP-Server via **LMTP** anzusprechen, ist es dennoch von unschätzbaren Wert, sollte später doch noch ein separater IMAP-Server erforderlich sein. Somit muss später "nur" noch die IP-Adresse oder der Name des IMAP-servers geändert werden und nicht zusätzlich an der Konfiguration noch grundlegende Anpassungen vorgenommen werden!+Auch wenn es für einen kleinen Server erst einmal als Overkill erscheinen mag, den IMAP-Server via **LMTP** anzusprechen, ist es dennoch von unschätzbaren Wert, sollte später doch noch ein separater IMAP-Server erforderlich sein. Somit muss später "nur" noch die IP-Adresse oder der Name des IMAP-Servers geändert werden und nicht zusätzlich an der Konfiguration noch grundlegende Anpassungen vorgenommen werden!
 </WRAP> </WRAP>
    # vim /etc/postfix/main.cf    # vim /etc/postfix/main.cf
 <code bash>################################################################################ <code bash>################################################################################
-## ROUTING WEITERLEITEN VON NACHRICHTEN AN DAS EIGENTLICHE ZIEL+## ROUTING WEITERLEITEN VON NACHRICHTEN AN DAS EIGENTLICHE ZIEL
 # #
 # Django : 2014-10-15 - Relayhost: Alle Nachrichten werden an den Relayhost # Django : 2014-10-15 - Relayhost: Alle Nachrichten werden an den Relayhost
Zeile 391: Zeile 393:
 #          smtp_destination_rate_delay = $default_destination_rate_delay #          smtp_destination_rate_delay = $default_destination_rate_delay
 #          virtual_destination_rate_delay = $default_destination_rate_delay #          virtual_destination_rate_delay = $default_destination_rate_delay
-#          Ausgehende Nachrichten des MAilinglistenservers auf 2,5 Minuten+#          Ausgehende Nachrichten des Mailinglistenservers auf 2,5 Minuten
 #          setzen #          setzen
 smtp_destination_rate_delay = 150s smtp_destination_rate_delay = 150s
 </code> </code>
  
 +<WRAP center round important 90%>
 +**WICHTIG**: \\ Die Option gilt für alle Clients! Das bedeutet, dass ein ''smtp_destination_rate_delay = 150s'' die Zustellversuche an alle SMTP-Ziele gilt. Im Maillog des Servers wird **__nicht__** extra ein Hinweis eingetragen, dass das rate_limiting zugeschlagen hat! \\
 +</WRAP>
 + 
 ==== Rückmeldungen beeinflussen und individualisieren ==== ==== Rückmeldungen beeinflussen und individualisieren ====
 In der Section **RÜCKMELDUNGEN BEEINFLUSSEN UND INDIVIDUALISIEREN** können wir festlegen, welche Informationen unser Mailserver unterdrücken und weitergeben soll. Auch eine Individualisierung auf Mailserverbetreiberebene sind möglich.  In der Section **RÜCKMELDUNGEN BEEINFLUSSEN UND INDIVIDUALISIEREN** können wir festlegen, welche Informationen unser Mailserver unterdrücken und weitergeben soll. Auch eine Individualisierung auf Mailserverbetreiberebene sind möglich. 
Zeile 445: Zeile 451:
 # default: disable_vrfy_command = no # default: disable_vrfy_command = no
 disable_vrfy_command = yes disable_vrfy_command = yes
 +
 +# Django : 2015-10-08 - Fehlercode bei Verwendung der Option
 +#          reject_plaintext_session beim Einsatz von verpflichtender
 +#          TLS-Transportverschlüsselung.
 +#          https://tools.ietf.org/html/rfc3463#section-3.8
 +# default: plaintext_reject_code = 450
 +# plaintext_reject_code = 571
 </code> </code>
 +
 +Da wir ja nicht nur englischsprachige Nutzer haben, die bei unserem MX Post abliefern dürfen, möchten wir unter Umständen auch individuelle Bouncemessages verwenden. In der Sektion **RÜCKMELDUNGEN BEEINFLUSSEN UND INDIVIDUALISIEREN** haben wir bereits den Parameter **bounce_template_file** gesetzt. was uns jetzt noch fehlt ist das zugehörige File. Dieses mustergültiges Nachrichtentemplate von den beiden Spezialisten Patrick Koetter und Ralf Hildebrandt aus dem Web herunter. 
 +   # cd /etc/postfix
 +
 +   # wget http://postfix.state-of-mind.de/bounce-templates/bounce.de-DE.cf
 +
 +
 +
  
 ===== Lookup-Tabellen ===== ===== Lookup-Tabellen =====
 +Bevor wir uns nun die einzelnen Lookup-Tabellen genauer ansehen, werfen wir noch einen Blick in die nachfolgende Übersicht um festzustellen, wann die einzelnen Tabellen in der Mailbearbeitung gezogen werden, also überhaupt einen Einfluß haben. 
 +
 +{{page>centos:mail_c7:postfix&nofooter}} 
 +
 Am Anfang der Definition unserer Lookup-Tabellen setzen wir noch zwei (Adress-)Listenspezifische Werte. Statt der Defaultmäßigen Tabellen im **hash**-Format setzen wir auf die wesentlich performanteren **btree**-Tabellen.  Am Anfang der Definition unserer Lookup-Tabellen setzen wir noch zwei (Adress-)Listenspezifische Werte. Statt der Defaultmäßigen Tabellen im **hash**-Format setzen wir auf die wesentlich performanteren **btree**-Tabellen. 
  
Zeile 1002: Zeile 1027:
 | **5xx**//Hinweistext//                  | Die Anfrage wird mit einem fatalen Fehlercode 5xx und dem Text //Hinweistext// abgelehnt                                                                                              | | **5xx**//Hinweistext//                  | Die Anfrage wird mit einem fatalen Fehlercode 5xx und dem Text //Hinweistext// abgelehnt                                                                                              |
 | **WARN**//Hinweistext//                 | Im Maillog des Mailservers wird ein Logeintrag mit den Informationen: \\ - Absender \\ - Empfänger \\ - HELO \\ - etc. \\ zusammen mit dem //Hinweistext// eingefügt.                 | | **WARN**//Hinweistext//                 | Im Maillog des Mailservers wird ein Logeintrag mit den Informationen: \\ - Absender \\ - Empfänger \\ - HELO \\ - etc. \\ zusammen mit dem //Hinweistext// eingefügt.                 |
 +| **restriction**                         | Es kommt eine der **permit**- oder **reject-[[centos:mail_c7:mta_4#absicherung_mit_hilfe_von_restrictions|Restrictions]]-Regeln** zur Anwendung                                       |
  
  
Zeile 1022: Zeile 1047:
 # Postfix die ASCII-Konfigurationsdatei direkt auswertet! # Postfix die ASCII-Konfigurationsdatei direkt auswertet!
 # #
 +#
 +#10.20.30.40/26        REJECT
 </file>  </file> 
  
Zeile 1071: Zeile 1098:
 # die zugehörige Datenbank erzeugt werden. # die zugehörige Datenbank erzeugt werden.
 # #
 +#tachtler.net          reject_plaintext_session
 </file> </file>
  
Zeile 1766: Zeile 1794:
 Wir editieren nun aber nicht diese Vorlage- und Musterdatei //**/etc/postfix/relocated**//, sondern legen uns eine eigene Dateien an, auch wenn diese eventuell erst einmal ohne Inhalt sind. Wir haben so später kein Problem mehr, wenn wir ad hoc auf eine Anforderung schnell reagieren müssen. Wir editieren nun aber nicht diese Vorlage- und Musterdatei //**/etc/postfix/relocated**//, sondern legen uns eine eigene Dateien an, auch wenn diese eventuell erst einmal ohne Inhalt sind. Wir haben so später kein Problem mehr, wenn wir ad hoc auf eine Anforderung schnell reagieren müssen.
  
-==== "@" ====+=== relocated-Datei === 
 +  * **relocated_maps** Lookup-Tabelle zum Aktivieren von "Bounce-Nachrichten" an den Absender einer eMail über nicht existierende eMailadressen mit Angabe der neu zu nutzenden eMailadresse des Empfängers. \\ **relocated_maps.db** Datenbankfile zur //relocated_maps//-Datei. <code> # vim /etc/postfix/relocated_maps</code> <file bash /etc/postfix/relocated_maps># Kapitel 5.2.6 relocated-Tabelle: Empfängrt verzogen 
 +# Lookup-Tabelle zum Aktivieren von "Bounce-Nachrichten" an den Absender  
 +# einer eMail über nicht existierende eMailadressen mit Angabe der neu zu  
 +# nutzenden eMailadresse des Empfängers. 
 +
 +# Nach dem Ändern und/oder Erweitern der Tabelle, muß noch mittels  
 +# $ postmap /etc/postfix/relocated_maps 
 +# die zugehörige Datenbank erzeugt werden. 
 +
 +michael.nausch@omni128.de      django@nausch.org 
 +</file> 
 +==== transport ==== 
 +Lookup-Tabelle zum Aktivieren einer alternativen Mailrouting bei der Zustellung an einen weiteren Mailserver.  
 +=== manpage === 
 +In der Manpage zu **transport** bzw. in der Datei //**/etc/postfix/transport**// finden wir detaillierte Informationen zur **transport - Postfix transport table format**. 
 +   # man 5 transport 
 +<code>TRANSPORT(5)                         File Formats Manual                        TRANSPORT(5) 
 + 
 +NAME 
 +       transport - Postfix transport table format 
 + 
 +SYNOPSIS 
 +       postmap /etc/postfix/transport 
 + 
 +       postmap -q "string" /etc/postfix/transport 
 + 
 +       postmap -q - /etc/postfix/transport <inputfile 
 + 
 +DESCRIPTION 
 +       The  optional  transport(5) table specifies a mapping from email addresses to message 
 +       delivery transports and next-hop destinations.  Message delivery transports  such  as 
 +       local  or smtp are defined in the master.cf file, and next-hop destinations are typi‐ 
 +       cally hosts or domain names. The table is searched by the trivial-rewrite(8) daemon. 
 + 
 +       This mapping overrides the default transport:nexthop selection  that  is  built  into 
 +       Postfix: 
 + 
 +       local_transport (default: local:$myhostname) 
 +              This  is  the default for final delivery to domains listed with mydestination, 
 +              and for [ipaddress] destinations that match $inet_interfaces or  $proxy_inter‐ 
 +              faces. The default nexthop destination is the MTA hostname. 
 + 
 +       virtual_transport (default: virtual:) 
 +              This  is  the  default for final delivery to domains listed with virtual_mail‐ 
 +              box_domains. The default nexthop destination is the recipient domain. 
 + 
 +       relay_transport (default: relay:) 
 +              This is the default for remote delivery to domains listed with  relay_domains. 
 +              In  order  of  decreasing  precedence,  the  nexthop destination is taken from 
 +              relay_transport,  sender_dependent_relayhost_maps,  relayhost,  or  from   the 
 +              recipient domain. 
 + 
 +       default_transport (default: smtp:) 
 +              This  is  the  default for remote delivery to other destinations.  In order of 
 +              decreasing precedence, the nexthop destination  is  taken  from  sender_depen‐ 
 +              dent_default_transport_maps,     default_transport,    sender_dependent_relay‐ 
 +              host_maps, relayhost, or from the recipient domain. 
 + 
 +       Normally, the transport(5) table is specified as a text file that serves as input  to 
 +       the postmap(1) command.  The result, an indexed file in dbm or db format, is used for 
 +       fast searching by the mail system. Execute the command  "postmap  /etc/postfix/trans‐ 
 +       port" to rebuild an indexed file after changing the corresponding transport table. 
 + 
 +       When the table is provided via other means such as NIS, LDAP or SQL, the same lookups 
 +       are done as for ordinary indexed files. 
 + 
 +       Alternatively, the table can be provided as a regular-expression map  where  patterns 
 +       are  given as regular expressions, or lookups can be directed to TCP-based server. In 
 +       those case, the lookups are done in a slightly different way as described below under 
 +       "REGULAR EXPRESSION TABLES" or "TCP-BASED TABLES"
 + 
 +CASE FOLDING 
 +       The  search  string is folded to lowercase before database lookup. As of Postfix 2.3, 
 +       the search string is not case folded with database types such  as  regexp:  or  pcre: 
 +       whose lookup fields can match both upper and lower case. 
 + 
 +TABLE FORMAT 
 +       The input format for the postmap(1) command is as follows: 
 + 
 +       pattern result 
 +              When  pattern  matches  the recipient address or domain, use the corresponding 
 +              result. 
 + 
 +       blank lines and comments 
 +              Empty lines and whitespace-only lines are ignored, as are  lines  whose  first 
 +              non-whitespace character is a `#'. 
 + 
 +       multi-line text 
 +              A logical line starts with non-whitespace text. A line that starts with white‐ 
 +              space continues a logical line. 
 + 
 +       The pattern specifies an email address, a domain name, or a domain name hierarchy, as 
 +       described in section "TABLE LOOKUP"
 + 
 +       The  result  is  of  the form transport:nexthop and specifies how or where to deliver 
 +       mail. This is described in section "RESULT FORMAT"
 + 
 +TABLE SEARCH ORDER 
 +       With lookups from indexed files such as DB or DBM, or from networked tables  such  as 
 +       NIS, LDAP or SQL, patterns are tried in the order as listed below: 
 + 
 +       user+extension@domain transport:nexthop 
 +              Deliver mail for user+extension@domain through transport to nexthop. 
 + 
 +       user@domain transport:nexthop 
 +              Deliver mail for user@domain through transport to nexthop. 
 + 
 +       domain transport:nexthop 
 +              Deliver mail for domain through transport to nexthop. 
 + 
 +       .domain transport:nexthop 
 +              Deliver  mail  for  any subdomain of domain through transport to nexthop. This 
 +              applies only when  the  string  transport_maps  is  not  listed  in  the  par‐ 
 +              ent_domain_matches_subdomains configuration setting.  Otherwise, a domain name 
 +              matches itself and its subdomains. 
 + 
 +       * transport:nexthop 
 +              The special pattern * represents any address (i.e. it functions as  the  wild- 
 +              card pattern, and is unique to Postfix transport tables). 
 + 
 +       Note  1: the null recipient address is looked up as $empty_address_recipient@$myhost‐ 
 +       name (default: mailer-daemon@hostname). 
 + 
 +       Note 2: user@domain or user+extension@domain lookup is available in Postfix  2.0  and 
 +       later. 
 + 
 +RESULT FORMAT 
 +       The  lookup result is of the form transport:nexthop.  The transport field specifies a 
 +       mail delivery transport such as smtp or local. The nexthop field specifies where  and 
 +       how to deliver mail. 
 + 
 +       The  transport  field specifies the name of a mail delivery transport (the first name 
 +       of a mail delivery service entry in the Postfix master.cf file). 
 + 
 +       The interpretation of the nexthop field is transport dependent. In the case of  SMTP, 
 +       specify  a  service  on  a  non-default  port  as  host:service, and disable MX (mail 
 +       exchanger) DNS lookups with [host] or [host]:port. The [] form is required  when  you 
 +       specify an IP address instead of a hostname. 
 + 
 +        null  transport  and  null  nexthop result means "do not change": use the delivery 
 +       transport and nexthop information that would be used when the entire transport  table 
 +       did not exist. 
 + 
 +        non-null  transport field with a null nexthop field resets the nexthop information 
 +       to the recipient domain. 
 + 
 +       A null transport field with non-null nexthop field  does  not  modify  the  transport 
 +       information. 
 + 
 +EXAMPLES 
 +       In  order  to  deliver internal mail directly, while using a mail relay for all other 
 +       mail, specify a null entry for internal destinations  (do  not  change  the  delivery 
 +       transport  or  the nexthop information) and specify a wildcard for all other destina‐ 
 +       tions. 
 + 
 +            my.domain    : 
 +            .my.domain   : 
 +            *            smtp:outbound-relay.my.domain 
 + 
 +       In order to send mail for example.com and its subdomains via the  uucp  transport  to 
 +       the UUCP host named example: 
 + 
 +            example.com      uucp:example 
 +            .example.com     uucp:example 
 + 
 +       When  no nexthop host name is specified, the destination domain name is used instead. 
 +       For example, the following directs mail for user@example.com via the  slow  transport 
 +       to  a  mail exchanger for example.com.  The slow transport could be configured to run 
 +       at most one delivery process at a time: 
 + 
 +            example.com      slow: 
 + 
 +       When no transport is specified, Postfix uses the transport that matches  the  address 
 +       domain  class  (see DESCRIPTION above).  The following sends all mail for example.com 
 +       and its subdomains to host gateway.example.com: 
 + 
 +            example.com      :[gateway.example.com] 
 +            .example.com     :[gateway.example.com] 
 + 
 +       In the above example, the [] suppress MX lookups.  This prevents mail  routing  loops 
 +       when your machine is primary MX host for example.com. 
 + 
 +       In  the case of delivery via SMTP, one may specify hostname:service instead of just a 
 +       host: 
 + 
 +            example.com      smtp:bar.example:2025 
 + 
 +       This directs mail for user@example.com to host bar.example port 2025.  Instead  of  a 
 +       numerical  port  a  symbolic  name  may be used. Specify [] around the hostname if MX 
 +       lookups must be disabled. 
 + 
 +       The error mailer can be used to bounce mail: 
 + 
 +            .example.com     error:mail for *.example.com is not deliverable 
 + 
 +       This causes all mail for user@anything.example.com to be bounced. 
 + 
 +REGULAR EXPRESSION TABLES 
 +       This section describes how the table lookups change when the table is  given  in  the 
 +       form  of  regular  expressions.  For a description of regular expression lookup table 
 +       syntax, see regexp_table(5) or pcre_table(5). 
 + 
 +       Each pattern is a regular expression that is applied  to  the  entire  address  being 
 +       looked  up.  Thus, some.domain.hierarchy is not looked up via its parent domains, nor 
 +       is user+foo@domain looked up as user@domain. 
 + 
 +       Patterns are applied in the order as specified in the table, until a pattern is found 
 +       that matches the search string. 
 + 
 +       The trivial-rewrite(8) server disallows regular expression substitution of $1 etc. in 
 +       regular expression lookup tables, because that could open a  security  hole  (Postfix 
 +       version 2.3 and later). 
 + 
 +TCP-BASED TABLES 
 +       This  section  describes  how the table lookups change when lookups are directed to a 
 +       TCP-based server. For a description of the TCP  client/server  lookup  protocol,  see 
 +       tcp_table(5).  This feature is not available up to and including Postfix version 2.4. 
 + 
 +       Each   lookup   operation   uses   the   entire   recipient   address   once.   Thus, 
 +       some.domain.hierarchy is not looked up via its parent domains, nor is user+foo@domain 
 +       looked up as user@domain. 
 + 
 +       Results are the same as with indexed file lookups. 
 + 
 +CONFIGURATION PARAMETERS 
 +       The  following  main.cf  parameters are especially relevant.  The text below provides 
 +       only a parameter summary. See postconf(5) for more details including examples. 
 + 
 +       empty_address_recipient 
 +              The address that is looked up instead of the null sender address. 
 + 
 +       parent_domain_matches_subdomains 
 +              List of Postfix features that use domain.tld patterns to match  sub.domain.tld 
 +              (as opposed to requiring .domain.tld patterns). 
 + 
 +       transport_maps 
 +              List of transport lookup tables. 
 + 
 +SEE ALSO 
 +       trivial-rewrite(8), rewrite and resolve addresses 
 +       master(5), master.cf file format 
 +       postconf(5), configuration parameters 
 +       postmap(1), Postfix lookup table manager 
 + 
 +README FILES 
 +       Use  "postconf readme_directory" or "postconf html_directory" to locate this informa‐ 
 +       tion. 
 +       ADDRESS_REWRITING_README, address rewriting guide 
 +       DATABASE_README, Postfix lookup table overview 
 +       FILTER_README, external content filter 
 + 
 +LICENSE 
 +       The Secure Mailer license must be distributed with this software. 
 + 
 +AUTHOR(S) 
 +       Wietse Venema 
 +       IBM T.J. Watson Research 
 +       P.O. Box 704 
 +       Yorktown Heights, NY 10598, USA 
 + 
 +                                                                                TRANSPORT(5) 
 +</code> 
 + 
 +=== transport-Datei === 
 +  * **transport_maps** Lookup-Tabelle zum Aktivieren einer alternativen Mailrouting bei der Zustellung an einen weiteren Mailserver. \\ **transport_maps.db** Datenbankfile zur //transport_maps//-Datei. <code> # vim /etc/postfix/transport_maps</code> <file bash /etc/postfix/transport_maps># Kapitel 5.2.5 transport-Tabelle: Abweichende Zustellung 
 +# Lookup-Tabelle zum Aktivieren einer alternativen Mailrouting bei der 
 +# Zustellung an einen weiteren Mailserver. Nach dem Ändern und/oder 
 +# Erweitern der Tabelle, muß noch mittels: 
 +#               $ postmap /etc/postfix/transport_map 
 +
 +# die zugehörige Datenbank erzeugt werden. 
 +
 +# Alle eMails, die an Subdomains von nausch.org gerichtet sind 
 +# ("." am Anfang der Zeile!) werden an den/die Mailserver von 
 +# intra.nausch.org (MX-Records) weitergeleitet. (keine "["-Klammern!) 
 +#.nausch.org                            smtp:intra.nausch.org 
 + 
 +# Alle eMails, die an die Domain tachtler.net gerichtet sind, werden an  
 +# den bzw. die Mailserver der Mail-Domäne t-offline.de (MX-Records)  
 +# weitergeleitet. (keine "["-Klammern!)  
 +# tachtler.net                          smtp:t-offline.de 
 + 
 +# Mails an backup.nausch.org werden an den Mailserver (A-Record) auf Port 25 
 +# mit Namen mail.intra.nausch.org geschickt. 
 +#backup.nausch.org                      smtp:[mail.intra.nausch.org]:25 
 + 
 +# Django : 2013-02-21 
 +# eMails an den Fax-Server an den Host vml000020 weiterleiten 
 +fax.nausch.org                          smtp:[10.0.0.20]:25 
 +# eMails an den Key-Server sollen an den Host vml000030 weitergeleitet 
 +# werden. 
 +keyserver.nausch.org                    smtp:[10.0.0.30]:25 
 + 
 +# Django : 2013-02-22 
 +# eMails an den Mailinglisten-Server an das Programm mailman weiterreichen 
 +#lists.nausch.org                       mailman: 
 +</file> 
 + 
 + 
 +==== virtual ==== 
 +Lookup-Tabelle zum Verwalten der virtuellen Domains und virtuellen eMail-Adressen. 
 +=== manpage === 
 +In der Manpage zu **virtual** bzw. in der Datei //**/etc/postfix/virtual**// finden wir detaillierte Informationen zur **virtual - Postfix virtual alias table format**. 
 +   # man 5 transport 
 +<code>VIRTUAL(5)                           File Formats Manual                          VIRTUAL(5) 
 + 
 +NAME 
 +       virtual - Postfix virtual alias table format 
 + 
 +SYNOPSIS 
 +       postmap /etc/postfix/virtual 
 + 
 +       postmap -q "string" /etc/postfix/virtual 
 + 
 +       postmap -q - /etc/postfix/virtual <inputfile 
 + 
 +DESCRIPTION 
 +       The  optional  virtual(5) alias table rewrites recipient addresses for all local, all 
 +       virtual, and all remote mail destinations.  This is unlike the aliases(5) table which 
 +       is  used  only  for  local(8) delivery.  Virtual aliasing is recursive, and is imple‐ 
 +       mented by the Postfix cleanup(8) daemon before mail is queued. 
 + 
 +       The main applications of virtual aliasing are: 
 + 
 +       ·      To redirect mail for one address to one or more addresses. 
 + 
 +       ·      To implement  virtual  alias  domains  where  all  addresses  are  aliased  to 
 +              addresses in other domains. 
 + 
 +              Virtual  alias domains are not to be confused with the virtual mailbox domains 
 +              that are implemented with the Postfix virtual(8)  mail  delivery  agent.  With 
 +              virtual mailbox domains, each recipient address can have its own mailbox. 
 + 
 +       Virtual aliasing is applied only to recipient envelope addresses, and does not affect 
 +       message headers.  Use canonical(5) mapping to rewrite header and  envelope  addresses 
 +       in general. 
 + 
 +       Normally, the virtual(5) alias table is specified as a text file that serves as input 
 +       to the postmap(1) command.  The result, an indexed file in dbm or db format, is  used 
 +       for fast searching by the mail system. Execute the command "postmap /etc/postfix/vir‐ 
 +       tual" to rebuild an indexed file after changing the corresponding text file. 
 + 
 +       When the table is provided via other means such as NIS, LDAP or SQL, the same lookups 
 +       are done as for ordinary indexed files. 
 + 
 +       Alternatively,  the  table can be provided as a regular-expression map where patterns 
 +       are given as regular expressions, or lookups can be directed to TCP-based server.  In 
 +       those case, the lookups are done in a slightly different way as described below under 
 +       "REGULAR EXPRESSION TABLES" or "TCP-BASED TABLES"
 + 
 +CASE FOLDING 
 +       The search string is folded to lowercase before database lookup. As of  Postfix  2.3, 
 +       the  search  string  is  not case folded with database types such as regexp: or pcre: 
 +       whose lookup fields can match both upper and lower case. 
 + 
 +TABLE FORMAT 
 +       The input format for the postmap(1) command is as follows: 
 + 
 +       pattern address, address, ... 
 +              When pattern matches a mail address, replace it by the corresponding address. 
 + 
 +       blank lines and comments 
 +              Empty lines and whitespace-only lines are ignored, as are  lines  whose  first 
 +              non-whitespace character is a `#'. 
 + 
 +       multi-line text 
 +              A logical line starts with non-whitespace text. A line that starts with white‐ 
 +              space continues a logical line. 
 + 
 +TABLE SEARCH ORDER 
 +       With lookups from indexed files such as DB or DBM, or from networked tables  such  as 
 +       NIS, LDAP or SQL, patterns are tried in the order as listed below: 
 + 
 +       user@domain address, address, ... 
 +              Redirect  mail  for  user@domain to address.  This form has the highest prece‐ 
 +              dence. 
 + 
 +       user address, address, ... 
 +              Redirect mail for user@site to address when site is equal to  $myorigin,  when 
 +              site  is listed in $mydestination, or when it is listed in $inet_interfaces or 
 +              $proxy_interfaces. 
 + 
 +              This functionality overlaps with functionality of the local  aliases(5)  data‐ 
 +              base.  The  difference  is that virtual(5) mapping can be applied to non-local 
 +              addresses. 
 + 
 +       @domain address, address, ... 
 +              Redirect mail for other users in domain to address.  This form has the  lowest 
 +              precedence. 
 + 
 +              Note:  @domain is a wild-card. With this form, the Postfix SMTP server accepts 
 +              mail for any recipient in domain, regardless of whether that recipient exists. 
 +              This  may  turn  your  mail  system  into  a backscatter source: Postfix first 
 +              accepts mail for non-existent recipients and then tries to return that mail as 
 +              "undeliverable" to the often forged sender address. 
 + 
 +RESULT ADDRESS REWRITING 
 +       The lookup result is subject to address rewriting: 
 + 
 +       ·      When the result has the form @otherdomain, the result becomes the same user in 
 +              otherdomain.  This works only for the first address in a multi-address  lookup 
 +              result. 
 + 
 +       ·      When   "append_at_myorigin=yes",  append  "@$myorigin"  to  addresses  without 
 +              "@domain"
 + 
 +       ·      When  "append_dot_mydomain=yes",  append  ".$mydomain"  to  addresses  without 
 +              ".domain"
 + 
 +ADDRESS EXTENSION 
 +       When  a  mail  address  localpart  contains  the  optional recipient delimiter (e.g., 
 +       user+foo@domain), the lookup order becomes: user+foo@domain,  user@domain,  user+foo, 
 +       user, and @domain. 
 + 
 +       The  propagate_unmatched_extensions  parameter  controls whether an unmatched address 
 +       extension (+foo) is propagated to the result of table lookup. 
 + 
 +VIRTUAL ALIAS DOMAINS 
 +       Besides virtual aliases, the virtual alias table can also be used to  implement  vir‐ 
 +       tual  alias domains. With a virtual alias domain, all recipient addresses are aliased 
 +       to addresses in other domains. 
 + 
 +       Virtual alias domains are not to be confused with the virtual  mailbox  domains  that 
 +       are implemented with the Postfix virtual(8) mail delivery agent. With virtual mailbox 
 +       domains, each recipient address can have its own mailbox. 
 + 
 +       With a virtual alias domain, the virtual domain has its own user  name  space.  Local 
 +       (i.e.  non-virtual)  usernames are not visible in a virtual alias domain. In particu‐ 
 +       lar, local aliases(5) and local mailing lists are not visible  as  localname@virtual- 
 +       alias.domain. 
 + 
 +       Support for a virtual alias domain looks like: 
 + 
 +       /etc/postfix/main.cf: 
 +           virtual_alias_maps = hash:/etc/postfix/virtual 
 + 
 +       Note:  some systems use dbm databases instead of hash.  See the output from "postconf 
 +       -m" for available database types. 
 + 
 +       /etc/postfix/virtual: 
 +           virtual-alias.domain     anything (right-hand content does not matter) 
 +           postmaster@virtual-alias.domain  postmaster 
 +           user1@virtual-alias.domain       address1 
 +           user2@virtual-alias.domain       address2, address3 
 + 
 +       The virtual-alias.domain anything entry is required for a virtual alias domain. With‐ 
 +       out  this  entry,  mail is rejected with "relay access denied", or bounces with "mail 
 +       loops back to myself"
 + 
 +       Do  not  specify  virtual  alias  domain  names  in  the  main.cf  mydestination   or 
 +       relay_domains configuration parameters. 
 + 
 +       With a virtual alias domain, the Postfix SMTP server accepts mail for known-user@vir‐ 
 +       tual-alias.domain, and rejects mail for unknown-user@virtual-alias.domain as undeliv‐ 
 +       erable. 
 + 
 +       Instead of specifying the virtual alias domain name via the virtual_alias_maps table, 
 +       you may also specify it via the main.cf virtual_alias_domains  configuration  parame‐ 
 +       ter.  This latter parameter uses the same syntax as the main.cf mydestination config‐ 
 +       uration parameter. 
 + 
 +REGULAR EXPRESSION TABLES 
 +       This section describes how the table lookups change when the table is  given  in  the 
 +       form  of  regular  expressions.  For a description of regular expression lookup table 
 +       syntax, see regexp_table(5) or pcre_table(5). 
 + 
 +       Each pattern is a regular expression that is applied  to  the  entire  address  being 
 +       looked  up.  Thus,  user@domain  mail addresses are not broken up into their user and 
 +       @domain constituent parts, nor is user+foo broken up into user and foo. 
 + 
 +       Patterns are applied in the order as specified in the table, until a pattern is found 
 +       that matches the search string. 
 + 
 +       Results  are  the same as with indexed file lookups, with the additional feature that 
 +       parenthesized substrings from the pattern can be interpolated as $1, $2 and so on. 
 + 
 +TCP-BASED TABLES 
 +       This section describes how the table lookups change when lookups are  directed  to  a 
 +       TCP-based  server.  For  a  description of the TCP client/server lookup protocol, see 
 +       tcp_table(5).  This feature is not available up to and including Postfix version 2.4. 
 + 
 +       Each lookup operation uses the entire address once.  Thus, user@domain mail addresses 
 +       are not broken up into their user and @domain constituent parts, nor is user+foo bro‐ 
 +       ken up into user and foo. 
 + 
 +       Results are the same as with indexed file lookups. 
 + 
 +BUGS 
 +       The table format does not understand quoting conventions. 
 + 
 +CONFIGURATION PARAMETERS 
 +       The following main.cf parameters are especially relevant to this topic. See the Post‐ 
 +       fix  main.cf file for syntax details and for default values. Use the "postfix reload" 
 +       command after a configuration change. 
 + 
 +       virtual_alias_maps 
 +              List of virtual aliasing tables. 
 + 
 +       virtual_alias_domains 
 +              List of virtual alias domains. This uses the same syntax as the  mydestination 
 +              parameter. 
 + 
 +       propagate_unmatched_extensions 
 +              A list of address rewriting or forwarding mechanisms that propagate an address 
 +              extension from the original address to the result.  Specify zero  or  more  of 
 +              canonical, virtual, alias, forward, include, or generic. 
 + 
 +       Other parameters of interest: 
 + 
 +       inet_interfaces 
 +              The  network  interface addresses that this system receives mail on.  You need 
 +              to stop and start Postfix when this parameter changes. 
 + 
 +       mydestination 
 +              List of domains that this mail system considers local. 
 + 
 +       myorigin 
 +              The domain that is appended to any address that does not have a domain. 
 + 
 +       owner_request_special 
 +              Give special treatment to owner-xxx and xxx-request addresses. 
 + 
 +       proxy_interfaces 
 +              Other interfaces that this machine receives mail on by way of a proxy agent or 
 +              network address translator. 
 + 
 +SEE ALSO 
 +       cleanup(8), canonicalize and enqueue mail 
 +       postmap(1), Postfix lookup table manager 
 +       postconf(5), configuration parameters 
 +       canonical(5), canonical address mapping 
 + 
 +README FILES 
 +       Use  "postconf readme_directory" or "postconf html_directory" to locate this informa‐ 
 +       tion. 
 +       ADDRESS_REWRITING_README, address rewriting guide 
 +       DATABASE_README, Postfix lookup table overview 
 +       VIRTUAL_README, domain hosting guide 
 + 
 +LICENSE 
 +       The Secure Mailer license must be distributed with this software. 
 + 
 +AUTHOR(S) 
 +       Wietse Venema 
 +       IBM T.J. Watson Research 
 +       P.O. Box 704 
 +       Yorktown Heights, NY 10598, USA 
 + 
 +                                                                                  VIRTUAL(5) 
 +</code> 
 +=== virtual-Dateien === 
 +== virtual_alias_domains == 
 +  * **virtual_alias_domains** Lookup-Tabelle zum Verwalten der virtuellen Domains. \\ **virtual_alias_domains.db**  Datenbankfile zur //virtual_alias_domains//-Datei. <code> # vim /etc/postfix/virtual_alias_domains</code> <file bash /etc/postfix/virtual_alias_domains># Kapitel 5.2.2 virtual: Weiterleitung und virtuelle Mailadressen 
 +# Lookup-Tabelle zum Verwalten der virtuellen Domains.  
 +# Nach dem Ändern und/oder Erweitern der Tabelle, muß noch mittels   
 +
 +#        $ postmap /etc/postfix/virtual_alias_domains 
 +
 +# die zugehörige Datenbank erzeugt werden. 
 +
 +#nausch.org                      meine_Hauptdomäne 
 +#wetter.nausch.org               blaablubb 
 +#omni128.de                      meine_erste_Domain 
 +#wetterstation-pliening.info     erste_Info_Domain 
 +#ebersberger-liedersammlung.de   Piraten 
 +#lists.nausch.org                Mailman 
 +</file> 
 +  * **virtual_alias_maps** Lookup-Tabelle zum Verwalten der virtuellen eMail-Adressen. \\ **virtual_alias_maps.db**  Datenbankfile zur //virtual_alias_maps//-Datei. <code> # vim /etc/postfix/virtual_alias_maps</code> <file bash /etc/postfix/virtual_alias_maps># Kapitel 5.2.2 virtual: Weiterleitung und virtuelle Mailadressen 
 +# Lookup-Tabelle zum Verwalten der virtuellen eMailadressen. 
 +# Nach dem Ändern und/oder Erweitern der Tabelle, muß noch mittels   
 +
 +#           $ postmap /etc/postfix/virtual_alias_maps 
 +
 +# die zugehörige Datenbank erzeugt werden. 
 +
 +# catch all - Sämtliche eMailadressen werden 1:1 umgeschrieben. Aus  
 +# webmaster@wetter.nausch.org wird webmaster@nausch.org. 
 +@wetter.nausch.org                      @nausch.org 
 + 
 +# eine einzelne Adresse gezielt umschreiben. Alle Nachrichten die an  
 +# admin@wetterstation-pliening.info addressiert sind, gehen an  
 +# michael@nausch.org. 
 +admin@wetterstation-pliening.info       michael@nausch.org 
 +michael@nausch.org                      django@nausch.org 
 +root@nausch.org                         django@nausch.org 
 +virusalert@nausch.org                   django@nausch.org 
 +postmaster@nausch.org                   django@nausch.org</file> 
 + 
 +=== virtual_alias files in Verbindung mit postfixadmin === 
 +Verwalten wir die Domänen und Nutzerkonten mit Hilfe von **[[centos:mail_c7:pfadmin_1|Postfixadmin]]**, werden wir nachfolgend in unsere Postfix-Konfigurationsdatei //**/etc/postfix/main.cf**// folgenden Block einfügen. 
 + 
 +<code># Django : 2014-10-15 - virtuelle Mail-Domains und Mailboxen mit Anbindung an 
 +#          das mySQL-Datenbankbackend (Verwaltung mit Hilfe von postfixadmin) 
 +# default: virtual_mailbox_domains = $virtual_mailbox_maps 
 +#          virtual_alias_maps = $virtual_maps 
 +#          virtual_mailbox_maps = 
 +virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf 
 +  
 +virtual_alias_maps =      proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf 
 +                          proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_maps.cf 
 +                          proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf 
 +  
 +virtual_mailbox_maps =    proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf 
 +                          proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf</code> 
 + 
 +Die zugehörigen Dateien, haben dann folgende Inhalte. 
 +== mysql_virtual_domains_maps.cf == 
 +   # vim /etc/postfix/mysql_virtual_domains_maps.cf 
 +<file bash /etc/postfix/mysql_virtual_domains_maps.cf># Django : 2013-02-07 
 +# Definition der Datenbankanbindung zur Abfrage der virtuellen Domaenen 
 +
 +user = postfix_user 
 +password = rbgsDK39DeM2b2btx9iMHfzd 
 +hosts = mariadb.dmz.nausch.org 
 +dbname = postfix 
 +query = SELECT domain FROM domain WHERE domain='%s' AND active = '1' 
 +</file> 
 + 
 +== mysql_virtual_alias_maps.cf == 
 +   # vim /etc/postfix/mysql_virtual_alias_maps.cf 
 +<file bash /etc/postfix/mysql_virtual_alias_maps.cf># Django : 2012-02-07 
 +# Definition der Datenbankanbindung zur Abfrage der virtual Alias Maps 
 +
 +user = postfix_user 
 +password = rbgsDK39DeM2b2btx9iMHfzd 
 +hosts = mariadb.dmz.nausch.org 
 +dbname = postfix 
 +query = SELECT goto FROM alias WHERE address='%s' AND active = '1' 
 +</file> 
 + 
 +== mysql_virtual_alias_domain_maps.cf == 
 +   # vim /etc/postfix/mysql_virtual_alias_domain_maps.cf 
 +<file bash /etc/postfix/mysql_virtual_alias_domain_maps.cf># Django : 2013-02-07 
 +# Definition der Datenbankanbindung zur Abfrage der virtual Alias Domain Maps 
 +
 +user = postfix_user 
 +password = rbgsDK39DeM2b2btx9iMHfzd 
 +hosts = mariadb.dmz.nausch.org 
 +dbname = postfix 
 +query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' AND 
 +           alias.address = CONCAT('%u', '@', alias_domain.target_domain) AND alias.active = 1 
 +           AND alias_domain.active='1' 
 +</file> 
 + 
 +== mysql_virtual_alias_domain_catchall_maps.cf == 
 +   # vim /etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf 
 +<file bash /etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf># Django : 2013-02-07 
 +# Definition der Datenbankanbindung zur Abfrage der virtual Alias Domain Catchall Maps 
 +
 +user = postfix_user 
 +password = rbgsDK39DeM2b2btx9iMHfzd 
 +hosts = mariadb.dmz.nausch.org 
 +dbname = postfix 
 +query = SELECT goto FROM alias,alias_domain WHERE alias_domain.alias_domain = '%d' AND 
 +           alias.address = CONCAT('@', alias_domain.target_domain) AND alias.active = 1 
 +           AND alias_domain.active='1' 
 +</file>  
 + 
 +== mysql_virtual_mailbox_maps.cf == 
 +   # vim /etc/postfix/mysql_virtual_mailbox_maps.cf 
 +<file bash /etc/postfix/mysql_virtual_mailbox_maps.cf># Django : 2013-02-07 
 +# Definition der Datenbankanbindung zur Abfrage der virtual Mailbox Maps 
 +
 +user = postfix_user 
 +password = rbgsDK39DeM2b2btx9iMHfzd 
 +hosts = mariadb.dmz.nausch.org 
 +dbname = postfix 
 +query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1' 
 +</file> 
 + 
 +== mysql_virtual_alias_domain_mailbox_maps.cf == 
 +   # vim /etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf 
 +<file bash /etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf># Django : 2012-10-09 
 +# Definition der Datenbankanbindung zur Abfrage der virtual Alias Domain Mailbox Maps 
 +
 +user = postfix_user 
 +password = rbgsDK39DeM2b2btx9iMHfzd 
 +hosts = mariadb.dmz.nausch.org 
 +dbname = postfix 
 +query = SELECT maildir FROM mailbox,alias_domain WHERE alias_domain.alias_domain = '%d' 
 +           AND mailbox.username = CONCAT('%u', '@', alias_domain.target_domain) AND 
 +           mailbox.active = 1 AND alias_domain.active='1' 
 +</file> 
 + 
 +==== bcc ==== 
 +Ergänzend zu den aus dem **RPM** enthaltenen Loogup_Tabellen, legen wir uns noch zwei weitere Tabellen an, nämlich die **recipient_bcc_maps** und die **sender_bcc_maps**.  
 +=== bcc-Dateien === 
 +== recipient_bcc_maps == 
 +  * **recipient_bcc_maps** Lookup-Tabelle für Blindcopies einer oder mehrerer Empfangsadressen zu einem oder mehrer Zieladressen. \\ **recipient_bcc_maps.db**  Datenbankfile zur //recipient_bcc_maps//-Datei. <code> # vim /etc/postfix/recipient_bcc_maps</code> <file bash /etc/postfix/recipient_bcc_maps># Django : 2014-06-11 
 +# Kapitel 5.2.3 bcc-Tabelle: Blindcopy einer oder mehrerer Empfangsadressen. 
 +
 +# Nach dem Ändern und/oder Erweitern der Tabelle, muß noch mittels  
 +# $ postmap /etc/postfix/recipient_bcc_maps 
 +# die zugehörige Datenbank erzeugt werden. 
 +
 +# catch all, alle Nachrichten einer bestimmten (Empfangs-)Domäne kopieren 
 +#@pml010080.intra.nausch.org            mailsave@nausch.org 
 +
 +# alle Nachrichten eines einzelnen Empfängers kopieren 
 +#weather@nausch.org                     mailsave@nausch.org 
 +
 +#f2b-reports@nausch.org                 michi@mail.sskm.de 
 +</file> 
 +  * **sender_bcc_maps** Lookup-Tabelle für Blindcopies einer oder mehrerer Absenderadressen zu einem oder mehrer Zieladressen. \\ **sender_bcc_maps.db**  Datenbankfile zur //sender_bcc_maps//-Datei. <code> # vim /etc/postfix/sender_bcc_maps</code> <file bash /etc/postfix/sender_bcc_maps># Django : 2014-06-11 
 +# Kapitel 5.2.3 bcc-Tabelle: Blindcopy einer oder mehrerer Sendeadressen. 
 +
 +# Nach dem Ändern und/oder Erweitern der Tabelle, muß noch mittels   
 +# $ postmap /etc/postfix/sender_bcc_maps 
 +# die zugehörige Datenbank erzeugt werden. 
 +
 +# catch all, alle Nachrichten einer bestimmten Domäne kopieren 
 +#@pml010080.intra.nausch.org            mailsave@nausch.org 
 +
 +# alle Nachrichten eines einzelnen Absenders kopieren 
 +#weather@nausch.org                     mailsave@nausch.org 
 +
 +#fail2ban@vml000080.dmz.nausch.org      michi@mail.sskm.de</file> 
 + 
 +In der Sektion **LOOKUP-TABELLEN** definieren wir nun die zuvor vorgestellten Lookup-Tabellen in der Hauptkonfigurationsdatei **main.cf**. 
 +   # vim /etc/postfix/main.cf 
 +<code bash>... 
 + 
 +################################################################################ 
 +## LOOKUP-TABELLEN 
 +
 +# Django : 2014-10-15 - default Datenbank Typ für die Befehle newaliases,  
 +#          postalias und postmap auf das performantere btree umgestellt. 
 +# default default_database_type = hash 
 +default_database_type = btree 
 + 
 +# Django : 2014-10-15 - Trennzeichen zwischen Usernamen und Adresserweiterung  
 +# default: recipient_delimiter = 
 +recipient_delimiter = + 
 + 
 +# Django : 2014-10-15 - Alias-Tabelle für die Zustellung von lokalen Nachrichten 
 +#          durch den MDA (Mail Delivery Agent) "local". Nach Änderungen an der 
 +#          Tabelle /etc/aliases ist "newaliases" zum Neubau des Datenbankfiles 
 +#          notwendig! 
 +# default: alias_maps = hash:/etc/aliases, nis:mail.aliase 
 +alias_maps = hash:/etc/aliases 
 +#            btree:/etc/mailman/aliases 
 +alias_database = hash:/etc/aliases 
 + 
 +# Django : 2014-10-15 - Optionale Lookup Tabelle mit allen gültigen Empfängern 
 +#          der in $relay_domains aufgeführten Domains 
 +# default: relay_recipient_maps = 
 +relay_recipient_maps = 
 +#                         btree:/etc/mailman/virtual-mailman 
 +#                         btree:/etc/mailman/roleaccounts  
 + 
 +# Django : 2014-10-15 - virtuelle Mail-Domains und Mailboxen mit Anbindung an 
 +#          das mySQL-Datenbankbackend (Verwaltung mit Hilfe von postfixadmin) 
 +# default: virtual_mailbox_domains = $virtual_mailbox_maps 
 +#          virtual_alias_maps = $virtual_maps 
 +#          virtual_mailbox_maps = 
 +virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf 
 + 
 +virtual_alias_maps =      proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf 
 +                          proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_maps.cf 
 +                          proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf 
 + 
 +virtual_mailbox_maps =    proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf 
 +                          proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf 
 + 
 +# Django : 2014-10-15 - BCC-Adress Lookup Tabelle mit deren Hilfe Nachrichten  
 +#          einzelner oder mehrerer Empfänger automatisch an einen weiteren  
 +#          Empfänger geschickt werden. 
 +# default: recipient_bcc_maps =  
 +recipient_bcc_maps = btree:/etc/postfix/recipient_bcc_maps 
 + 
 +# Django : 2014-10-15 - BCC-Adress Lookup Tabelle mit deren Hilfe Nachrichten  
 +#          einzelner oder mehrerer Absender automatisch an einen weiteren  
 +#          Empfänger geschickt werden. 
 +sender_bcc_maps = btree:/etc/postfix/sender_bcc_maps 
 + 
 +# Django : 2014-10-16 - SMTP Lookup Tabelle mit deren Hilfe eMail-Adressen der 
 +#          Empfänger im SMTP-Envelope und im Header der eMail beim Verlassen 
 +#          des MTA via SMTP umgeschrieben werden können. 
 +# default: smtp_generic_maps =    
 +smtp_generic_maps = btree:/etc/postfix/smtp_generic_maps 
 + 
 +# Django : 2014-10-16 - LMTP Lookup Tabelle mit deren Hilfe eMail-Adressen der 
 +#          Empfänger im SMTP-Envelope und im Header der eMail beim Verlassen 
 +#          des MTA zum MDA via LMTP umgeschrieben werden können. 
 +# default: smtp_generic_maps =    
 +lmtp_generic_maps = btree:/etc/postfix/lmtp_generic_maps 
 + 
 +# Django : 2014-10-16 - Lookup-Tabelle zum Umschreibungen von Absender-eMail- 
 +#          -Adressen im SMTP-Envelop und/oder im Header der eMail.  
 +# default: sender_canonical_maps =  
 +sender_canonical_maps = btree:/etc/postfix/sender_canonical_maps 
 +#                       SRS - Sender Rewriting Scheme mit postsrsd  
 +#                       tcp:127.0.0.1:10001 
 +#          Definition welche Adressen umgeschrieben werden sollen 
 +# default: sender_canonical_classes = envelope_sender, header_sender  
 +sender_canonical_classes = envelope_sender 
 + 
 +# Django : 2014-10-16 - Lookup-Tabelle zum Umschreibungen von Empfänger-eMail- 
 +#          -Adressen im SMTP-Envelop und/oder im Header der eMail. 
 +# default: recipient_canonical_maps = 
 +recipient_canonical_maps = btree:/etc/postfix/recipient_canonical_maps 
 +#                       SRS - Sender Rewriting Scheme mit postsrsd 
 +#                       tcp:127.0.0.1:10002 
 +#          Definition welche Adressen umgeschrieben werden sollen 
 +# default: recipient_canonical_classes = envelope_recipient, header_recipient  
 +recipient_canonical_classes = envelope_recipient 
 + 
 +# Django : 2014-10-16 - Lookup-Tabelle zum Aktivieren von "Bounce-Nachrichten" 
 +#          an den Absender einer eMail über nicht existierende eMail-Adressen  
 +#          mit Angabe der neu zu nutzenden eMailadresse des Empfängers. 
 +# default: relocated_maps =  
 +relocated_maps = btree:/etc/postfix/relocated_maps 
 + 
 +# Django : 2015-10-15 - Ergebnisse der Adress-Verification cachen 
 +#          Kapitel 12.2.2 Dynamische Empfänger-Verifizierung 
 +#          Kapitel 9.5.5 envelope sender überprüfen 
 +# default: address_verify_map btree:$data_directory/verify_cache 
 + 
 + 
 +</code> 
 + 
 + 
 + 
 + 
 ===== Absicherung mit Hilfe von Restrictions ===== ===== Absicherung mit Hilfe von Restrictions =====
-Bevor wir uns nun die einzelnen Konfigurationsdateien ansehen, werfen wir noch einen Blick in die nachfolgende Übersicht um festzustellen, wann die einzelnen Restriction-Tables in der Mailbearbeitung gezogen werden, also überhaupt einen Einfluß haben+Bevor wir uns nun tiefer in die einzelnen Restrictions eintauchen machen wir uns mit den Grundlagen vertraut. 
  
  
Zeile 1794: Zeile 2648:
     * **reject_rbl_client ix.dnsbl.manitu.net** Blockiert die eMail, wenn die Client-IP-Adresse bei **ix.dnsbl.manitu.net** geblacklistet ist.     * **reject_rbl_client ix.dnsbl.manitu.net** Blockiert die eMail, wenn die Client-IP-Adresse bei **ix.dnsbl.manitu.net** geblacklistet ist.
     * **reject_rbl_client bl.spamcop.net** Blockiert die eMail, wenn die Client-IP-Adresse bei **bl.spamcop.net** geblacklistet ist.     * **reject_rbl_client bl.spamcop.net** Blockiert die eMail, wenn die Client-IP-Adresse bei **bl.spamcop.net** geblacklistet ist.
-    * **reject_rbl_client dnsbl.njabl.org** Blockiert die eMail, wenn die Client-IP-Adresse bei **dnsbl.njabl.org** geblacklistet ist. 
   * **reject_rhsbl_client multi.uribl.com** \\ Blockiert die eMail, sofern der Client-Hostname in der verwendeten **rhsbl_domain**(**RHSBL**)((**R**ight-**H**and **S**ided **B**lacklist)) gelistet ist.   * **reject_rhsbl_client multi.uribl.com** \\ Blockiert die eMail, sofern der Client-Hostname in der verwendeten **rhsbl_domain**(**RHSBL**)((**R**ight-**H**and **S**ided **B**lacklist)) gelistet ist.
 +  * **reject_plaintext_session** \\ Liefert einen **REJECT**, wenn die Verbindung nicht TLS transportverschlüsselt ist. 
 +==== SMTP Recipient Restrictions ====
 +Nachfolgende Definitionen fügen wir nun am Ende der //**/etc/postfix/main.cf**// ein. Hierzu benutzen wir wie immer den Editor unserer Wahl. 
 +   # vim /etc/postfix/main.cf
 +<code>...
 +
 +################################################################################
 +## SMTP RECIPIENT RESTRICTIONS
 +#
 +# Django : 2014-10-29 - Schutz unserer Empfänger mit Hilfe der Recipient 
 +#          Restrictions 
 +# default: smtpd_recipient_restrictions =
 +smtpd_recipient_restrictions =
 +#          Postmaster, abuse und andere aufgaben- oder funktionsgebundene 
 +#          eMail-Adressen (Role-Accounts) whitelisten
 +           check_recipient_access btree:/etc/postfix/access_recipient-rfc
 +
 +#          Black- und Whitelisting       (Kapitel 8.2.3 White- und Blacklisting)
 +           check_client_access cidr:/etc/postfix/access_client
 +           check_helo_access btree:/etc/postfix/access_helo
 +           check_sender_access btree:/etc/postfix/access_sender
 +           check_recipient_access btree:/etc/postfix/access_recipient
 +
 +#          Unsere eigenen Nutzer zulassen-/erlauben             
 +#                                (Kapitel 8.2.2 Relaying erlauben und verbieten)
 +           permit_sasl_authenticated
 +           permit_mynetworks
 +
 +#          RBL überprüfen               (Kapitel 10.11 Realtime Blackhole Lists)
 +           reject_rbl_client zen.spamhaus.org
 +           reject_rbl_client ix.dnsbl.manitu.net
 +           reject_rbl_client bl.spamcop.net
 +           reject_rhsbl_client multi.uribl.com
 +
 +#          Greylisting via postgrey checken via Unix-Socket
 +#                                          (Kapitel 9.2.5 postgrey installieren)
 +#          check_policy_service unix:postgrey/socket,
 +
 +#          Policyd-Weight check over TCP-Connection 
 +#                                      (Kapitel 9.3 policyd-weight installieren)
 +#          check_client_access btree:/etc/postfix/policyd_weight_client_whitelist,
 +#          check_policy_service inet:127.0.0.1:12525,
 +
 +#          Dynamische Prüfung auf existente Relay-Empfänger
 +#                            (Kapitel 12.2.2 Dynamische Empfänger-Verifizierung)
 +           reject_unverified_recipient
 +
 +#          Backupserver (MX) erlauben
 +#          permit_mx_backup
 +
 +#          alles andere an relaying verbieten   
 +#                                (Kapitel 8.2.2 Relaying erlauben und verbieten)
 +           reject_unauth_destination
 +
 +#          Quota-Status-Policy-Daemon am Dovecot-Backend-System
 +#          Dovecotbuch (ISBN 978-3-95539-74-7) Seite 219 ff.  
 +#                          (Kapitel 11.11 "Der Quota-Policy-Server für Postfix")
 +           check_policy_service inet:10.0.0.77:10000
 +
 +#          Zu guter Letzt alles durchlassen, was bis jetzt noch nicht 
 +#          beanstandet wurde
 +           permit
 +</code>
 +
 +==== SMTP Relay Restrictions ====
 +Nachfolgende Definitionen fügen wir nun am Ende der //**/etc/postfix/main.cf**// ein. 
 +   # vim /etc/postfix/main.cf
 +<code>...
 +
 +################################################################################
 +## SMTP RELAY RESTRICTIONS
 +#
 +# Django : 2014-10-27 - Definition, wer über unseren MX relayen darf oder nicht. 
 +#          http://www.postfix.org/postconf.5.html#smtpd_relay_restrictions
 +# default: smtpd_relay_restrictions = permit_mynetworks, 
 +#          permit_sasl_authenticated, defer_unauth_destination
 +#
 +smtpd_relay_restrictions =
 +# Unsere eigenen Nutzer zulassen-/erlauben
 +           permit_sasl_authenticated
 +           permit_mynetworks
 +# Backupserver (MX) erlauben
 +#           permit_mx_backup
 +# alles andere an relaying verbieten, d.h. mit einem finalen error 550 abweisen
 +           reject_unauth_destination
 +</code>
 +
 +===== main.cf =====
 +Somit ergibt sich vorerst folgende Hauptkonfigurationsdatei //**/etc/postfix/main.cf**//.
 +   # less /etc/postfix/main.cf
 +<file bash /etc/postfix/main.cf>################################################################################
 +#                                                                              #
 +#    Django : 2014-10-15 - Musterkonfiguration Postfix 2.11 unter CentOS 7     #
 +#                                                                              #
 +################################################################################
 +
 +################################################################################
 +## INSTALLATIONS-KONFIGURATIONS INFORMATIONEN 
 +#
 +# Folgende Default-Parameter werden benutzt, sobald eine neue Postfix-Version 
 +# installiert wird.
 +#
 +# Django : 2014-10-31 - Vollständiger Pfad zum Postfix sendmail Programm, dem
 +#          zu senmail kompatiblen sendmail Befehl.
 +# default: sendmail_path = /usr/sbin/sendmail
 +sendmail_path = /usr/sbin/sendmail.postfix
 +
 +# Django : 2014-10-31 - Vollständiger Pfad zum Postfix newaliases Programm, dem
 +#          zu sendmail kompatiblen Programm zum Anlegen der Alias Datenbanken.
 +# default: newaliases_path = /usr/bin/newaliases
 +newaliases_path = /usr/bin/newaliases.postfix
 +
 +# Django : 2014-10-31 - Vollständiger Pfad zum Postfix qmail-Programm, dem zu
 +#          sendmail kompatiblen Programm zum Anzeigen der Maile-Queues
 +# default: mailq_path = /usr/bin/mailq
 +mailq_path = /usr/bin/mailq.postfix
 +
 +# Django : 2014-10-31 - Gruppe für die Befehle mail submission und queue
 +#          management. Die Gruppe muss eine numerische eigene ID haben
 +#          und darf nicht mit anderen Benutzeraccounts geteilt werden,
 +#          auch nicht mit dem Postfix User! 
 +# default: setgid_group = postdrop 
 +setgid_group = postdrop
 +
 +# Django : 2014-10-31 - Pfad für die Postfix Postfix HTML Dokumentation.
 +# default: html_directory
 +html_directory = no
 +
 +# Django : 2014-10-31 - Pfad für die Postfix online man-pages.
 +# default: manpage_directory = /usr/local/man
 +manpage_directory = /usr/share/man
 +
 +# Django : 2014-10-31 - Pfadangabe für die Postfix Beispielkonfigurationsdateien.
 +#          Dieser Parameter ist obsolete seit Postfix 2.1.
 +# default: sample_directory = /etc/postfix
 +sample_directory = /usr/share/doc/postfix-2.11.3/samples
 +
 +# Django : 2014-10-31 - Pfadangabe für die Postfix README Dateien.
 +# default: readme_directory = no
 +readme_directory = /usr/share/doc/postfix-2.11.3/README_FILES
 +
 +
 +################################################################################
 +## PFADANGABEN DER LOKALEN INSTALLATION 
 +#
 +# Django : 2014-10-31 - Definition des Speicherortes für die Queue-Dateien von
 +#          Postfix. Dies ist auch der root-Pfad, falls Postfix in einer
 +#          chroot-Umgebung laufen sollte. In der Datei examples/chroot-setup
 +#          findet man bei Bedarf nützliche Hinweise und Beispiele, die 
 +#          beschreiben, wie man Postfix in einer chroot-Umgebung aufsetzen und 
 +#          betreiben kann. 
 +# default: queue_directory = /var/spool/postfix
 +queue_directory = /var/spool/postfix
 +
 +# Django : 2014-10-31 - Vollständiger Pfad zu allen postXXX-Programmen.
 +# default: command_directory = /usr/sbin
 +command_directory = /usr/sbin
 +
 +# Django : 2014-10-31 Vollständiger Pfad zum Verzeichnis, in dem sich alle
 +#          postfix Daemon Programme (die z.B. auch in der master.cf
 +#          aufgeführt sind) befinden. Das Verzeichnis muss root gehören!
 +# default: daemon_directory = /usr/libexec/postfix
 +daemon_directory = /usr/libexec/postfix
 +
 +# Django : 2014-10-31 - Datenverzeichnis, in dem Postfix alle variablen Daten
 +#          ablegt, wie z.B. Caches, Zufallszahlen ect. pp. Das Verzeichnis 
 +#          muss dem nachfolgendem "mail_owner" gehören!
 +# default: data_directory = /var/lib/postfix
 +data_directory = /var/lib/postfix
 +
 +
 +################################################################################
 +## RECHTE BEI QUEUES UND PROZESSEN
 +#
 +# Django : 2014-10-31 - Definition des Nutzers, unter dem die meisten Postfix
 +#          Daemons laufen und mit dem die Queue-Dateien geschrieben werden.
 +#          Die User muss unique sein, d.h. er darf weder einer anderen Gruppe 
 +#          noch einem Anderen User angehören, sowie fremde Dateirechte und 
 +#          Prozesse auf dem System besitzen! Also unbedingt einen separaten 
 +#          Nutzer verwenden! 
 +# default: mail_owner = postfix
 +mail_owner = postfix
 +
 +# Django : 2014-10-31 - Festlegung der Defaultrechte, die vom LDA (Local 
 +#          Delivery Agent) verwendet werden, wenn dieser Nachrichten in eine 
 +#          externe Datei schreibt, oder einem anderen Befehl übergibt.
 +#          Der Parameter wird auch verwendet, sollten keine userbezogenen
 +#          Vorgaben vorhanden sein. 
 +#          Auf keinen Fall einen privilegierten Nutzer oder gar den Benutzer
 +#          postfix verwenden!
 +# default: default_privs = nobody
 +default_privs = nobody
 +
 +################################################################################
 +## DEBUGGING 
 +#
 +# Django : 2014-10-31 - Mit dem Parameter "debug_peer_level" wird festgelegt
 +#          um welchen Faktor der Logging-Level erhöht wird, wenn ein SMTP 
 +#          Client, ein Hostname oder eine IP-Adresse zu den Definitionen des
 +#          nachfolgenden "debug_peer_list"-Parameters passt.
 +# default: debug_peer_level = 2
 +debug_peer_level = 2
 +
 +# Django : 2014-10-31 : Definition einer Liste aus Netzwerk-Adressen,
 +#          Namen, IP-Adressen oder entsprechender Postfix-Listen 
 +#          "type:name", für die der Loglevel gemäß dem obigen Loglevelwert
 +#          erhöht werden soll.
 +#          Bsp: debug_peer_list = 127.0.0.1
 +#               debug_peer_list = some.domain
 +#               cidr:/etc/postfix/debug_peer_list
 +# default: debug_peer_list =
 +
 +# Django : 2014-10-13 - Debugger-Befehlszeile
 +#          Die Option "debugger_command" definiert den kompletten Debug-Aufruf,
 +#          das ausgeführt werden soll, sofern der Postfix Daemon mit der 
 +#          Option -D gestartet wurde.
 +#          Am Ende der Befehlskette sollte man ein "... & sleep 5" anfügen, 
 +#          damit damit der Debugger genügend Zeit hat loszulegen, bevor das 
 +#          Programm aufgerufen wird.
 +#
 +#          Da wir kein X-System auf unserem Mailserver installiert haben (wozu 
 +#          auch?), verwenden wir nachfolgendes Beispiel. Als Ergebnis erhalten 
 +#          wir damit eine Datei mit dem Namen des Prozesses und der zugehörigen 
 +#          ID, die im Konfigurationsverzeichnis abgespeichert wird.
 +#
 +debugger_command =
 +           PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont;
 +           echo where) | gdb $daemon_directory/$process_name $process_id 2>&1
 +           >$config_directory/$process_name.$process_id.log & sleep 5
 +
 +
 +################################################################################
 +## ZUSTÄNDIGKEITEN, VERTRAUENSWÜRDIGE NETZE UND NETZWERKK-DEFINITIONEN
 +#
 +# Django : 2014-10-15 - Hostname auf "offiziellen" DNS-MX-Record Namen gesetzt
 +# default: myhostname = FQDN
 +myhostname = mx01.nausch.org
 +
 +# Django : 2014-10-15 - Domainpart der lokal generierten Nachrichten gesetzt
 +# default: myorigin = $myhostname
 +myorigin = $mydomain
 +
 +# Django : 2014-10-15 - Für welche Domains ist unser Mailserver zuständig,
 +#          also final destination? Zusätzlich zu den Defaultwerten soll der MTA 
 +#          auch noch Nachrichten für die beiden Sub-Domains lists.nausch.org 
 +#          (Mailman) und dmarc.nausch.org (DMARC-Reportmails) annehmen.
 +# default: mydestination = $myhostname, localhost.$mydomain, localhost
 +mydestination = 
 +                $myhostname
 +                localhost.$mydomain
 +                localhost
 +                lists.nausch.org
 +                dmarc.nausch.org
 +
 +# default: unbekannte Empfänger sollen abgewiesen und nicht mit einem
 +#          temporären Fehler 450 abgewiesen werden.
 +unknown_local_recipient_reject_code = 550
 +
 +# Django : 2014-10-15 - Soll bei einem unbekanntem Ziel der genaue Tabellenname
 +#          bei der Ablehnung genannt werden?
 +# default: show_user_unknown_table_name = yes 
 +show_user_unknown_table_name = no
 +
 +# Django : 2014-10-15 - auf allen Interfaces und Protokollen (IPv4 und IPv6) 
 +#          soll gelauscht werden 
 +# default: inet_interfaces = all
 +# default: inet_protocols = all
 +
 +# Django : 2014-10-15 - Grundsätzlich soll erst einmal unser Mailserver nur dem
 +#          eigenen Host trauen, sonst niemanden! 
 +# default: mynetworks_style = subnet
 +mynetworks_style = host
 +
 +mynetworks =
 +                127.0.0.0/8
 +                [::1]/128
 +                10.0.0.0/24
 +                10.0.10.0/26
 +                130.185.109.34/32
 +                130.185.109.87/32
 +
 +# Django : 2015-10-15 - Backup-Mailserver explizit erlauben
 +# default: permit_mx_backup_networks =
 +permit_mx_backup_networks = 88.217.171.167/32
 +
 +
 +################################################################################
 +## ROUTING _ WEITERLEITEN VON NACHRICHTEN AN DAS EIGENTLICHE ZIEL
 +#
 +# Django : 2014-10-15 - Relayhost: Alle Nachrichten werden an den Relayhost
 +#          smtp-out.dmz.nausch.org gesendet.
 +# default: relayhost =
 +# relayhost = [smtp-out.dmz.nausch.org]
 +
 +# Django : 2014-10-15 - Backup-Relayhost: Sollte der $relayhost nicht erreichbar
 +#          sein, soll sich unser MTA an den backup-relayhost 
 +#          smtp-backup.dmz.nausch.org senden
 +# default: smtp_fallback_relay = $fallback_relay 
 +# smtp_fallback_relay = [smtp-backup.dmz.nausch.org]
 +
 +# Django : 2014-10-15 - Relay Domains: Postfix als eingehendes Mailrelay vor 
 +#          einem anderen Server
 +# default: relay_domains = $mydestination 
 +relay_domains = btree:/etc/postfix/relay_domains
 +
 +# Django : 2014-10-15 - Nachrichten für eine bestimmte Richtung sollen
 +#          abweichend von den MX-Definitionen im DNS an dedizierte Ziele
 +#          geroutet/weitergeleitet werden.
 +# default: transport_maps =
 +transport_maps = btree:/etc/postfix/transport_maps
 +
 +# Django : 2014-10-15 - Definition zur Erreichbarkeit unseres MDA-Servers 
 +#          Dovecot-IMAP
 +# default: virtual_transport = virtual
 +virtual_transport = lmtp:[10.0.0.77]:24
 +
 +
 +################################################################################
 +## QUEUEING-VERHALTEN
 +#
 +# Django : 2014-10-18 - Queue-Lifetime auf 3 Tage heruntersetzen, defininiert
 +#          die maximale Zeit, die der MX versuchen darf, eine Nachricht zuzu-
 +#          stellen
 +# default: maximal_queue_lifetime = 5d
 +maximal_queue_lifetime = 3d
 +
 +# Django : 2014-03-17- Bounce-Queue-Lifetime auf 3 Tage heruntersetzen, die
 +#          der MTA versuchen soll eine Bouncenachricht zuzustellen.
 +# default: bounce_queue_lifetime = 5d
 +bounce_queue_lifetime = 3d
 +
 +
 +################################################################################
 +## NACHRICHTENGROESSE UND ZUSTELLVERSUCHE/-MENGEN 
 +#
 +# Django : 2014-10-18 Maximale Nachrichtengröße festlegen. Maximale Nachrichten-
 +#          größe einer Nachricht incl. der Headerinformationen darf maximal 
 +#          50 MB ( 52428800 = 50*1024*1024 ) betragen, darüber verweigert 
 +#          Postfix die Annahme. 
 +# default: message_size_limit = 10240000
 +message_size_limit = 52428800
 +
 +# Django : 2014-10-18 Maximale Mailboxgröße einer einzelnen Mailbox bzw. 
 +#          Maildir-Fiels. Der Wert darf nicht kleiner als die maximale 
 +#          Nachrichtengröße (message_size_limit) sein.
 +# default: mailbox_size_limit = 10240000
 +mailbox_size_limit = 52428800
 +
 +# Django : 2010-10-28 - Rate Limiting (DOS-Attacken verhindern) maximale
 +#          Zustellung limitieren (Kapitel 24 des Buches Postfix)
 +#          (Kapitel 13.14 Rate-Limiting gegenüber Clients durchsetzen)
 +#          Basiszeiteinheit für die Kalkulation der rate-limits
 +# default: anvil_rate_time_unit = 60s
 +#
 +#          Maximale Anzahl gleichzeitiger Verbindungen pro einliefernenden Host
 +# default : smtpd_client_connection_count_limit = 50 
 +smtpd_client_connection_count_limit = 20
 +#
 +#          Maximale Anzahl von Verbindungsversuchen je definierter Zeiteinheit 
 +#          (anvil_rate_time_unit) pro einliefernden Host
 +# default: smtpd_client_connection_rate_limit = 0
 +smtpd_client_connection_rate_limit = 20
 +#
 +#          Maximale Anzahl von erlaubten Empfänger Adressen je definierter 
 +#          Zeiteinheit (anvil_rate_time_unit) pro einliefernden Host
 +# default: smtpd_client_recipient_rate_limit = 0
 +smtpd_client_recipient_rate_limit = 50
 +#
 +#          Maximale Anzahl von erlaubten Anzahl von eMails je definierter Zeit-
 +#          einheit (anvil_rate_time_unit) pro einliefernden Host
 +# deafault: smtpd_client_message_rate_limit = 0
 +smtpd_client_message_rate_limit = 50
 +#
 +#          Welche Cleints sollen vom Rate-Limeting ausgenommen werden? Per
 +#          Default sind dies alle Clients aus dem eigenen Netzwerk $mynetworks
 +# default: smtpd_client_event_limit_exceptions = 
 +#          ${smtpd_client_connection_limit_exceptions:$mynetworks}
 +#
 +#          Wie oft soll der anvil-Daemon Statistikdaten ins Maillog schreiben?
 +# default: anvil_status_update_time = 600s         
 +#
 +#          Ausgehende Verbindungen der Delivery-Clients limitieren. Für jeden
 +#          einzelnen Transport kann bei Bedarf eine eigene Rate definiert 
 +#          werden.
 +# default: default_destination_rate_delay = 0s
 +#          error_destination_rate_delay = $default_destination_rate_delay
 +#          lmtp_destination_rate_delay = $default_destination_rate_delay
 +#          local_destination_rate_delay = $default_destination_rate_delay
 +#          relay_destination_rate_delay = $default_destination_rate_delay
 +#          retry_destination_rate_delay = $default_destination_rate_delay
 +#          smtp_destination_rate_delay = $default_destination_rate_delay
 +#          virtual_destination_rate_delay = $default_destination_rate_delay
 +#          Ausgehende Nachrichten des MAilinglistenservers auf 2,5 Minuten
 +#          setzen
 +smtp_destination_rate_delay = 150s
 +
 +
 +################################################################################
 +## RÜCKMELDUNGEN BEEINFLUSSEN UND INDIVIDUALISIEREN
 +#
 +# Django : 2014-10-18 - Greeting Banner bei der 220er Begrüßung des MTA
 +smtpd_banner = $myhostname ESMTP $mail_name
 +
 +# Django : 2014-10-16 - Extra-Footer bls zweite Zeiler jeder Fehlermeldungen 
 +#          anfügen
 +smtpd_reject_footer = \c. Contact your postmaster/admin for technical assistance. He can achieve our postmaster via email: postmaster@nausch.org or via fax: +49 8121 883179. In any case, please provide the following information in your problem report: This error message, time ($localtime), client ($client_address) and server ($server_name).
 +
 +# Django : 2014-10-16 - Anzeige des Tabellen-Namens, in der der Empfänger
 +#          nicht gefunden wurde. Das unterdrücken macht unter Umständen die
 +#          Fehlersuche etwas aufwändiger, aber Externen geht diese Detailinfo
 +#          im Grunde nichts an. 
 +# default: show_user_unknown_table_name = yes
 +show_user_unknown_table_name = no
 +
 +# Django : 2014-10-24 - Adressverifikationsdetails unterdrücken
 +#          Weder den numerischen SMTP-reply-Code, noch den enhanced status code
 +#          zurückgeben. Lediglich "Recipient address lookup failed" zurückmelden.
 +# default: unverified_recipient_reject_reason =
 +unverified_recipient_reject_reason = Recipient address lookup failed
 +
 +# Django : 2014-10-24 - Adressverifikationsdetails unterdrücken
 +#          Weder den numerischen SMTP-reply-Code, noch den enhanced status code
 +#          zurückgeben. Lediglich "Recipient address lookup failed" zurückmelden.
 +# default: unverified_sender_reject_reason =
 +unverified_sender_reject_reason = Sender address lookup failed
 +
 +# Django : 2014-10-18 Definition der benutzerspezifischen und individualisierten 
 +#          Bounce-Nachrichten mit deutsch- und englischsprachigen Texten aktiviert
 +# default: bounce_template_file =
 +bounce_template_file = /etc/postfix/bounce.de-DE.cf
 +
 +# Django : 2014-10-18 - Delivery Status Notification (DSN) selectiv sperren
 +#          oder freigeben
 +# default: smtpd_discard_ehlo_keyword_address_maps =
 +smtpd_discard_ehlo_keyword_address_maps = cidr:/etc/postfix/esmtp_access
 +
 +# Django : 2014-10-18 - SMTP-Kommando VRFY sperren, mit dem eine einfache und
 +#          schnelle Addressverifizierung möglich ist.
 +# default: disable_vrfy_command = no
 +disable_vrfy_command = yes
 +
 +# Django : 2015-10-08 - Fehlercode bei Verwendung der Option
 +#          reject_plaintext_session beim Einsatz von verpflichtender
 +#          TLS-Transportverschlüsselung.
 +#          https://tools.ietf.org/html/rfc3463#section-3.8
 +# default: plaintext_reject_code = 450
 +# plaintext_reject_code = 573
 +
 +
 +################################################################################
 +## LOOKUP-TABELLEN
 +#
 +# Django : 2014-10-15 - default Datenbank Typ für die Befehle newaliases, 
 +#          postalias und postmap auf das performantere btree umgestellt.
 +# default default_database_type = hash
 +default_database_type = btree
 +
 +# Django : 2014-10-15 - Trennzeichen zwischen Usernamen und Adresserweiterung 
 +# default: recipient_delimiter =
 +recipient_delimiter = +
 +
 +# Django : 2014-10-15 - Alias-Tabelle für die Zustellung von lokalen Nachrichten
 +#          durch den MDA (Mail Delivery Agent) "local". Nach Änderungen an der
 +#          Tabelle /etc/aliases ist "newaliases" zum Neubau des Datenbankfiles
 +#          notwendig!
 +# default: alias_maps = hash:/etc/aliases, nis:mail.aliase
 +alias_maps = hash:/etc/aliases
 +#            btree:/etc/mailman/aliases
 +alias_database = hash:/etc/aliases
 +
 +# Django : 2014-10-15 - Optionale Lookup Tabelle mit allen gültigen Empfängern
 +#          der in $relay_domains aufgeführten Domains
 +# default: relay_recipient_maps =
 +relay_recipient_maps =
 +#                         btree:/etc/mailman/virtual-mailman
 +#                         btree:/etc/mailman/roleaccounts 
 +
 +# Django : 2014-10-15 - virtuelle Mail-Domains und Mailboxen mit Anbindung an
 +#          das mySQL-Datenbankbackend (Verwaltung mit Hilfe von postfixadmin)
 +# default: virtual_mailbox_domains = $virtual_mailbox_maps
 +#          virtual_alias_maps = $virtual_maps
 +#          virtual_mailbox_maps =
 +virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql_virtual_domains_maps.cf
 +
 +virtual_alias_maps =      proxy:mysql:/etc/postfix/mysql_virtual_alias_maps.cf
 +                          proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_maps.cf
 +                          proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_catchall_maps.cf
 +#
 +virtual_mailbox_maps =    proxy:mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
 +                          proxy:mysql:/etc/postfix/mysql_virtual_alias_domain_mailbox_maps.cf
 +
 +# Django : 2014-10-15 - BCC-Adress Lookup Tabelle mit deren Hilfe Nachrichten 
 +#          einzelner oder mehrerer Empfänger automatisch an einen weiteren 
 +#          Empfänger geschickt werden.
 +# default: recipient_bcc_maps = 
 +recipient_bcc_maps = btree:/etc/postfix/recipient_bcc_maps
 +
 +# Django : 2014-10-15 - BCC-Adress Lookup Tabelle mit deren Hilfe Nachrichten 
 +#          einzelner oder mehrerer Absender automatisch an einen weiteren 
 +#          Empfänger geschickt werden.
 +sender_bcc_maps = btree:/etc/postfix/sender_bcc_maps
 +
 +# Django : 2014-10-16 - SMTP Lookup Tabelle mit deren Hilfe eMail-Adressen der
 +#          Empfänger im SMTP-Envelope und im Header der eMail beim Verlassen
 +#          des MTA via SMTP umgeschrieben werden können.
 +# default: smtp_generic_maps =   
 +smtp_generic_maps = btree:/etc/postfix/smtp_generic_maps
 +
 +# Django : 2014-10-16 - LMTP Lookup Tabelle mit deren Hilfe eMail-Adressen der
 +#          Empfänger im SMTP-Envelope und im Header der eMail beim Verlassen
 +#          des MTA zum MDA via LMTP umgeschrieben werden können.
 +# default: smtp_generic_maps =   
 +lmtp_generic_maps = btree:/etc/postfix/lmtp_generic_maps
 +
 +# Django : 2014-10-16 - Lookup-Tabelle zum Umschreibungen von Absender-eMail-
 +#          -Adressen im SMTP-Envelop und/oder im Header der eMail. 
 +# default: sender_canonical_maps = 
 +sender_canonical_maps = btree:/etc/postfix/sender_canonical_maps
 +#                       SRS - Sender Rewriting Scheme mit postsrsd 
 +#                       tcp:127.0.0.1:10001
 +#          Definition welche Adressen umgeschrieben werden sollen
 +# default: sender_canonical_classes = envelope_sender, header_sender 
 +sender_canonical_classes = envelope_sender
 +
 +# Django : 2014-10-16 - Lookup-Tabelle zum Umschreibungen von Empfänger-eMail-
 +#          -Adressen im SMTP-Envelop und/oder im Header der eMail.
 +# default: recipient_canonical_maps =
 +recipient_canonical_maps = btree:/etc/postfix/recipient_canonical_maps
 +#                       SRS - Sender Rewriting Scheme mit postsrsd
 +#                       tcp:127.0.0.1:10002
 +#          Definition welche Adressen umgeschrieben werden sollen
 +# default: recipient_canonical_classes = envelope_recipient, header_recipient 
 +recipient_canonical_classes = envelope_recipient
 +
 +# Django : 2014-10-16 - Lookup-Tabelle zum Aktivieren von "Bounce-Nachrichten"
 +#          an den Absender einer eMail über nicht existierende eMail-Adressen 
 +#          mit Angabe der neu zu nutzenden eMailadresse des Empfängers.
 +# default: relocated_maps = 
 +relocated_maps = btree:/etc/postfix/relocated_maps
 +
 +# Django : 2015-10-15 - Ergebnisse der Adress-Verification cachen
 +#          Kapitel 12.2.2 Dynamische Empfänger-Verifizierung
 +#          Kapitel 9.5.5 envelope sender überprüfen
 +# default: address_verify_map = btree:$data_directory/verify_cache
 +
 +
 +################################################################################
 +## SMTP RECIPIENT RESTRICTIONS
 +#
 +# Django : 2014-10-29 - Schutz unserer Empfänger mit Hilfe der Recipient 
 +#          Restrictions 
 +# default: smtpd_recipient_restrictions =
 +smtpd_recipient_restrictions =
 +#          Postmaster, abuse und andere aufgaben- oder funktionsgebundene 
 +#          eMail-Adressen (Role-Accounts) whitelisten
 +           check_recipient_access btree:/etc/postfix/access_recipient-rfc
 +
 +#          Black- und Whitelisting       (Kapitel 8.2.3 White- und Blacklisting)
 +           check_client_access cidr:/etc/postfix/access_client
 +           check_helo_access btree:/etc/postfix/access_helo
 +           check_sender_access btree:/etc/postfix/access_sender
 +           check_recipient_access btree:/etc/postfix/access_recipient
 +
 +#          Unsere eigenen Nutzer zulassen-/erlauben             
 +#                                (Kapitel 8.2.2 Relaying erlauben und verbieten)
 +           permit_sasl_authenticated
 +           permit_mynetworks
 +
 +#          RBL überprüfen               (Kapitel 10.11 Realtime Blackhole Lists)
 +           reject_rbl_client zen.spamhaus.org
 +           reject_rbl_client ix.dnsbl.manitu.net
 +           reject_rbl_client bl.spamcop.net
 +           reject_rhsbl_client multi.uribl.com
 +
 +#          Greylisting via postgrey checken via Unix-Socket
 +#                                          (Kapitel 9.2.5 postgrey installieren)
 +#          check_policy_service unix:postgrey/socket,
 +
 +#          Policyd-Weight check over TCP-Connection 
 +#                                      (Kapitel 9.3 policyd-weight installieren)
 +#          check_client_access btree:/etc/postfix/policyd_weight_client_whitelist,
 +#          check_policy_service inet:127.0.0.1:12525,
 +
 +#          Dynamische Prüfung auf existente Relay-Empfänger
 +#                            (Kapitel 12.2.2 Dynamische Empfänger-Verifizierung)
 +           reject_unverified_recipient
 +
 +#          Backupserver (MX) erlauben
 +           permit_mx_backup
 +
 +#          alles andere an relaying verbieten   
 +#                                (Kapitel 8.2.2 Relaying erlauben und verbieten)
 +           reject_unauth_destination
 +
 +#          Quota-Status-Policy-Daemon am Dovecot-Backend-System
 +#          Dovecotbuch (ISBN 978-3-95539-74-7) Seite 219 ff.  
 +#                          (Kapitel 11.11 "Der Quota-Policy-Server für Postfix")
 +           check_policy_service inet:10.0.0.77:10000
 +
 +#          Zu guter Letzt alles durchlassen, was bis jetzt noch nicht 
 +#          beanstandet wurde
 +           permit
 +
 +
 +################################################################################
 +## SMTP RELAY RESTRICTIONS
 +#
 +# Django : 2014-10-27 - Definition, wer über unseren MX relayen darf oder nicht. 
 +#          http://www.postfix.org/postconf.5.html#smtpd_relay_restrictions
 +# default: smtpd_relay_restrictions = permit_mynetworks, 
 +#          permit_sasl_authenticated, defer_unauth_destination
 +#
 +smtpd_relay_restrictions =
 +# Unsere eigenen Nutzer zulassen-/erlauben
 +           permit_sasl_authenticated,
 +           permit_mynetworks,
 +# Backupserver (MX) erlauben
 +           permit_mx_backup,
 +# alles andere an relaying verbieten, d.h. mit einem finalen error 550 abweisen
 +           reject_unauth_destination
 +</file>
 +===== Konfiguration aktivieren =====
 +Zur Aktivierung unserer Konfiguration benutzen wir **systemctl**.
 +   # systemctl restart postfix
 +
 +Da keine Rückmeldung erfolgte können wir davon ausgehen, dass alle unsere Konfigurationsoptionen unseren Wünschen entsprechend gesetzt wurden.
 +
 +Wir können aber auch den Status unseres Mailservers abfragen.
 +   # systemctl status postfix
 +<code>postfix.service - Postfix Mail Transport Agent
 +   Loaded: loaded (/usr/lib/systemd/system/postfix.service; enabled)
 +   Active: active (running) since Mon 2014-11-03 22:35:18 CET; 3s ago
 +  Process: 3222 ExecStop=/usr/sbin/postfix stop (code=exited, status=0/SUCCESS)
 +  Process: 3206 ExecReload=/usr/sbin/postfix reload (code=exited, status=0/SUCCESS)
 +  Process: 3236 ExecStart=/usr/sbin/postfix start (code=exited, status=0/SUCCESS)
 +  Process: 3234 ExecStartPre=/usr/libexec/postfix/chroot-update (code=exited, status=0/SUCCESS)
 +  Process: 3231 ExecStartPre=/usr/libexec/postfix/aliasesdb (code=exited, status=0/SUCCESS)
 + Main PID: 3309 (master)
 +   CGroup: /system.slice/postfix.service
 +           ├─3309 /usr/libexec/postfix/master -w
 +           ├─3310 pickup -l -t unix -u
 +           └─3311 qmgr -l -t unix -u
 +
 +Nov 03 22:35:17 vml000087.dmz.nausch.org systemd[1]: Starting Postfix Mail Transport Agent...
 +Nov 03 22:35:18 vml000087.dmz.nausch.org postfix/master[3309]: daemon started -- version 2.11.3, configuration /etc/postfix
 +Nov 03 22:35:18 vml000087.dmz.nausch.org systemd[1]: Started Postfix Mail Transport Agent.
 +</code>
 +
 +====== Links ======
 +  * **⇐ [[centos:mail_c7:mta_3|Zurück zum Kapitel "DNS Einstellungen rund um Mailserver"]]**
 +  * **⇒ [[centos:mail_c7:mta_5|Weiter zum Kapitel "SSL/TLS - Verbindungen verschlüsselte Kommunikation für Postfix 2.11 unter CentOS 7"]]**
 +  * **[[centos:mail_c7:start|Zurück zum Kapitel >>Mailserverinstallation unter CentOS 7<<]]**
 +  * **[[wiki:start|Zurück zu >>Projekte und Themenkapitel<<]]**
 +  * **[[http://dokuwiki.nausch.org/doku.php/|Zurück zur Startseite]]**
  
  
  • centos/mail_c7/mta_4.1415037677.txt.gz
  • Zuletzt geändert: 03.11.2014 18:01.
  • von django