Einrichten
Mailserver Einrichten
(Debian 5.0 Lenny, Ubuntu 12.04, Ubuntu 14.04)
Einrichten des Mail Servers mit Postfix/UWImapd/Fetchmail Als erstes habe ich ein Debian 5.0 installiert. Bei Tasksel habe ich nur "Standart-System" ausgewählt, so das ich keine grafische Oberfläche habe. Im nächsten Schritt habe ich die fehlenden Programme mit aptitude nachinstalliert: aptitude install fetchmail joe libsasl2-modules mc openssh-server postfix sasl2-bin uw-imapd amavist-new clamav-daemon smbfs spamassasin htop openvpn squid ntpdate ncftp sarg Für diesen Mailserver nehmen wir folgendes an: Es gibt 2 Nutzer, die eMails empfangen und senden möchten. Die lokalen Namen sind: lokalernutzer lokalernutzer2 mit den Mail Adressen: meine@meinedomain.de nochne@meinedomain.de Die eigene Domain heisst: meinedomain.de Und der Mailserver im Internet, über dem verschickt und empfangen wird heisst: irgendein.mail.de Fetchmail ist für den Abruf der eMails aus dem Internet zuständig. Im home Verzeichnis von root habe ich die .fetchmailrc angelegt und befüllt. Eine Kopie der Datei kommt als fetchmailrc in das Verzeichnis /etc Inhalt der Datei: -->schnipp<-- server irgendein.mail.de proto pop3 user meine@meinedomain.de pass passwort to lokalernutzer ssl user nochne@meinedomain.de pass passwort2 to lokalernutzer2 ssl -->schnapp<-- wenn das nicht geht kann man auch das probieren: mda "/usr/bin/procmail -d andre" statt to lokalnutzer Als erstes wird der Server genannt, wo die Mail abgerufen wird. Hier ist es: irgendein.mail.de Danach das Protokoll, in diesem Fall pop3. Auf dem System müssen lokale Nutzer eingerichtet sein, zu denen die eMail dann zugestellt wird. in diesem Fall gehen die mails von meine@meinedomain.de an den Benutzer lokalernutzer Das Passwort "passwort" ist das, was beim pop3 Abruf benötigt wird. ssl bedeutet, das die Verbindung verschlüsselt ist. Manche Provider verlangen das. Zum Abschluss muss man noch "newaliases" ausführen. Danach kann man eMails empfangen und in die Postfächer sortieren. Danach geht es an Postfix. Während der Installation mit Aptitude wurde ich gefragt, wie ich es nutzen wollte. Ich habe mich für "Internet mit Smarthosts" entschieden. Als Smarthost habe ich meinen Mailserver, z.b. irgendein.mail.de eingetragen. Die Datei main.cf muss folgenden Inhalt haben: -->schnipp<-- # See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = meinedomain.de alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = mailserver.meinedomain.de, localhost.meinedomain.de, localhost relayhost = irgendein.mail.de mynetworks = 192.1.1.0/24 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all content_filter=smtp-amavis:[127.0.0.1]:10024 smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous virtual_maps = hash:/etc/postfix/virtusertable smtp_sender_dependent_authentication = yes smtp_sender_dependent_relayhost_map = hash:/etc/postfix/sender_relay -->schnapp<-- Erklärung der einzellnen Werte: smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem -> Selbsterstelltes Zertifikat smtpd_use_tls=yes -> Abruf im Netz benötigt TLS Verschlüsselung myhostname = meinedomain.de -> Mein Domainname den ich nutze, z.b. nitschke-marl.de alias_maps = hash:/etc/aliases -> hier wird die Nutzerliste gesucht mydestination = mailserver.meinedomain.de, localhost.meinedomain.de, localhost -> nochmal meine Domain relayhost = irgendein.mail.de -> Hier gehen die Mails hin mynetworks = 192.1.1.0/24 [::ffff:127.0.0.0]/104 [::1]/128 -> Mein Netzwerk aus dem Mails akzeptiert werden smtpd_sasl_password_maps = hash:/etc/postfix/sasl_passwd -> Hier stehen die Kennwörter für den Versand zum Smarthost virtual_maps = hash:/etc/postfix/virtusertable -> Zuordnung lokaler Nutzer zur eMail smtp_sender_dependent_authentication = yes -> Smarthost im Internet benötigt Authentifizierung smtp_sender_dependent_relayhost_map = hash:/etc/postfix/sender_relay -> Liste der Nutzer zu Smarthosts In der sasl_passwd ist hinterlegt welche eMail Adresse sich beim Smarthost im Internet mit welchem Kennwort anmeldet. Hier muss also das Kennwort des nächsten Mailservers rein. Die Datei sasl_passwd hat folgenden Inhalt: -->schnipp<-- meine@meinedomain.de meine@meinedomain.de:smarthostkennwort nochne@meinedomain.de nochne@meinedomain.de:smarthostkennwort -->schnapp<-- Die Virtusertable ordnet nochmal die eMail dem internen Nutzer zu. In der ersten Zeite kommt nochmal der Mailserver rein, über dem im Internet die eMails versendet werden. Daneben steht meine Domain. Die nächten Zeilen sidn die eMail Adresse und daneben der lokale Nutzer. (vergleiche fetchmail.rc und aliases) und virtusertable folgenden Inhalt: -->schnipp<-- irgendein.mail.de meinedomain.de meine@meinedomain.de lokalernutzer nochne@meinedomain.de lokalernutzer2 -->schnapp<-- Die Datei /etc/postfix/sasl/smtpd.conf habe ich folgendes eingegeben: pwcheck_method: saslauthd mech_list: PLAIN LOGIN saslauthd_pathd: /var/run/saslauthd/mux autotransition: true Die saslauthd ist für den Authentifizierungsdämon zuständig. Bei /etc/default/saslauthd habe ich folgendes geändert: -->schnipp<-- MECHANISMS="shadow" START=yes OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd" -->schnapp<-- Folgende Befehle habe ich ausgeführt, weil Postfix ja in einer chroot Umgebung läuft: mkdir -p /var/spool/postfix/var/run ch /var/run mv saslauthd /var/spool/postfix/var/run ln -s /var/spool/postfix/var/run/saslauthd/saslauthd adduser postfix sasl /etc/init.d/postfix restart Am Ende dieser Prozedur kann man folgendes machen: eMails von Extern Empfangen, sie werden in die richtigen Postfächer einsortiert und der Client kann sie sich anschauen. Email intern verschicken. Das Funktioniert. Für externen Verwand muss noch die Datei /etc/postfix/sender_relay angelegt und mit Inhalt befüllt werden. Hier steht die eMail Adresse und der dazu passende Smarthost im Internet drin. -->schnipp<-- meine@meinedomain.de irgendein.mail.de nochne@meinedomain.de irgendein.mail.de -->schnapp<-- Damit die Virenprüfung funktioniert muss man das Programm Amavisd-new sowie Spamassisin noch in Postfix einbinden. Dazu muss die Datei main.cf folgendes Aussehen haben: -->schnipp<-- # See /usr/share/postfix/main.cf.dist for a commented, more complete version # Debian specific: Specifying a file name will cause the first # line of that file to be used as the name. The Debian default # is /etc/mailname. #myorigin = /etc/mailname smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU) biff = no # appending .domain is the MUA's job. append_dot_mydomain = no # Uncomment the next line to generate "delayed mail" warnings #delay_warning_time = 4h readme_directory = no # TLS parameters smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key smtpd_use_tls=yes smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache # See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for # information on enabling SSL in the smtp client. myhostname = meinedomain.de alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases myorigin = /etc/mailname mydestination = mailserver.meinedomain.de, localhost.meinedomain.de, localhost relayhost = irgendein.mail.de mynetworks = 192.1.1.0/24 [::ffff:127.0.0.0]/104 [::1]/128 mailbox_command = procmail -a "$EXTENSION" mailbox_size_limit = 0 recipient_delimiter = + inet_interfaces = all content_filter=smtp-amavis:[127.0.0.1]:10024 smtpd_sasl_auth_enable = yes smtpd_sasl_local_domain = smtpd_sasl_security_options = noanonymous broken_sasl_auth_clients = yes smtpd_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_auth_enable = yes smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd smtp_sasl_security_options = noanonymous virtual_maps = hash:/etc/postfix/virtusertable smtp_sender_dependent_authentication = yes -->schnapp<-- Erklärung: content_filter=smtp-amavis:[127.0.0.1]:10024 -> übergibt die Mails zur Virenprüfung an das locale amavis Im Verzeichnis /etc/amavis/conf.d müssen noch zwei Dateien bearbeitet werden. Die /etc/postfix/master.cf muss folgenden Inhalt haben: -->schnipp<-- # # Postfix master process configuration file. For details on the format # of the file, see the master(5) manual page (command: "man 5 master"). # # Do not forget to execute "postfix reload" after editing this file. # # ========================================================================== # service type private unpriv chroot wakeup maxproc command + args # (yes) (yes) (yes) (never) (100) # ========================================================================== smtp inet n - - - - smtpd #submission inet n - - - - smtpd # -o smtpd_tls_security_level=encrypt # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #smtps inet n - - - - smtpd # -o smtpd_tls_wrappermode=yes # -o smtpd_sasl_auth_enable=yes # -o smtpd_client_restrictions=permit_sasl_authenticated,reject # -o milter_macro_daemon_name=ORIGINATING #628 inet n - - - - qmqpd pickup fifo n - - 60 1 pickup -o content_filter= -o receive_override_options=no_header_body_checks cleanup unix n - - - 0 cleanup qmgr fifo n - n 300 1 qmgr #qmgr fifo n - - 300 1 oqmgr tlsmgr unix - - - 1000? 1 tlsmgr rewrite unix - - - - - trivial-rewrite bounce unix - - - - 0 bounce defer unix - - - - 0 bounce trace unix - - - - 0 bounce verify unix - - - - 1 verify flush unix n - - 1000? 0 flush proxymap unix - - n - - proxymap proxywrite unix - - n - 1 proxymap smtp unix - - - - - smtp # When relaying mail as backup MX, disable fallback_relay to avoid MX loops relay unix - - - - - smtp -o smtp_fallback_relay= # -o smtp_helo_timeout=5 -o smtp_connect_timeout=5 showq unix n - - - - showq error unix - - - - - error retry unix - - - - - error discard unix - - - - - discard local unix - n n - - local virtual unix - n n - - virtual lmtp unix - - - - - lmtp anvil unix - - - - 1 anvil scache unix - - - - 1 scache # # ==================================================================== # Interfaces to non-Postfix software. Be sure to examine the manual # pages of the non-Postfix software to find out what options it wants. # # Many of the following services use the Postfix pipe(8) delivery # agent. See the pipe(8) man page for information about ${recipient} # and other message envelope options. # ==================================================================== # # maildrop. See the Postfix MAILDROP_README file for details. # Also specify in main.cf: maildrop_destination_recipient_limit=1 # maildrop unix - n n - - pipe flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient} # # See the Postfix UUCP_README file for configuration details. # uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient) # # Other external delivery methods. # ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient) bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension} mailman unix - n n - - pipe flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user} smtp-amavis unix - - - - 2 smtp -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:10025 inet n - - - - smtpd -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,reject -o smtpd_helo_restrictions= -o smtpd_sender_restrictions= -o smtpd_recipient_restrictions=permit_mynetworks,reject -o smtpd_data_restrictions=reject_unauth_pipelining -o smtpd_end_of_data_restrictions= -o mynetworks=127.0.0.0/8 -o smtpd_error_sleep_time=0 -o smtpd_soft_error_limit=1001 -o smtpd_hard_error_limit=1000 -o smtpd_client_connection_count_limit=0 -o smtpd_client_connection_rate_limit=0 -o receive_override_options=no_header_body_checks,no_unknown_recipient_checks -->schnapp<-- Die Datei 15-content_filter_mode mussfolgendes Aussehen haben: -->schnipp<-- use strict; # You can modify this file to re-enable SPAM checking through spamassassin # and to re-enable antivirus checking. # # Default antivirus checking mode # Uncomment the two lines below to enable it back # #@bypass_virus_checks_maps = ( # \%bypass_virus_checks, \@bypass_virus_checks_acl, \$bypass_virus_checks_re); # # Default SPAM checking mode # Uncomment the two lines below to enable it back # @bypass_spam_checks_maps = ( \%bypass_spam_checks, \@bypass_spam_checks_acl, \$bypass_spam_checks_re); 1; # ensure a defined return -->schnapp<-- Und die Datei 20-debian_defaults folgenden Inhalt: -->schnipp<-- use strict; # ADMINISTRATORS: # Debian suggests that any changes you need to do that should never # be "updated" by the Debian package should be made in another file, # overriding the settings in this file. # # The package will *not* overwrite your settings, but by keeping # them separate, you will make the task of merging changes on these # configuration files much simpler... # see /usr/share/doc/amavisd-new/examples/amavisd.conf-default for # a list of all variables with their defaults; # see /usr/share/doc/amavisd-new/examples/amavisd.conf-sample for # a traditional-style commented file # [note: the above files were not converted to Debian settings!] # # for more details see documentation in /usr/share/doc/amavisd-new # and at http://www.ijs.si/software/amavisd/amavisd-new-docs.html $QUARANTINEDIR = "/var/spool/mail/spam"; $quarantine_subdir_levels = 1; # enable quarantine dir hashing $log_recip_templ = undef; # disable by-recipient level-0 log entries $DO_SYSLOG = 1; # log via syslogd (preferred) $syslog_ident = 'amavis'; # syslog ident tag, prepended to all messages $syslog_facility = 'mail'; $syslog_priority = 'debug'; # switch to info to drop debug output, etc $enable_db = 1; # enable use of BerkeleyDB/libdb (SNMP and nanny) $enable_global_cache = 1; # enable use of libdb-based cache if $enable_db=1 $inet_socket_port = 10024; # default listening socket $sa_spam_subject_tag = '***SPAM*** '; $sa_tag_level_deflt = 5.0; # add spam info headers if at, or above that level $sa_tag2_level_deflt = 8.31; # add 'spam detected' headers at that level $sa_kill_level_deflt = 8.31; # triggers spam evasive actions $sa_dsn_cutoff_level = 10; # spam level beyond which a DSN is not sent $sa_mail_body_size_limit = 200*1024; # don't waste time on SA if mail is larger $sa_local_tests_only = 0; # only tests which do not require internet access? # Quota limits to avoid bombs (like 42.zip) $MAXLEVELS = 14; $MAXFILES = 1500; $MIN_EXPANSION_QUOTA = 100*1024; # bytes $MAX_EXPANSION_QUOTA = 300*1024*1024; # bytes # You should: # Use D_DISCARD to discard data (viruses) # Use D_BOUNCE to generate local bounces by amavisd-new # Use D_REJECT to generate local or remote bounces by the calling MTA # Use D_PASS to deliver the message # # Whatever you do, *NEVER* use D_REJECT if you have other MTAs *forwarding* # mail to your account. Use D_BOUNCE instead, otherwise you are delegating # the bounce work to your friendly forwarders, which might not like it at all. # # On dual-MTA setups, one can often D_REJECT, as this just makes your own # MTA generate the bounce message. Test it first. # # Bouncing viruses is stupid, always discard them after you are sure the AV # is working correctly. Bouncing real SPAM is also useless, if you cannot # D_REJECT it (and don't D_REJECT mail coming from your forwarders!). $final_virus_destiny = D_DISCARD; # (data not lost, see virus quarantine) $final_banned_destiny = D_BOUNCE; # D_REJECT when front-end MTA $final_spam_destiny = D_DISCARD; #$final_bad_header_destiny = D_PASS; # False-positive prone (for spam) #$virus_admin = "spam\@meinedomain.de"; # due to D_DISCARD default #$spam_admin = "spam\@meinedomain.de"; $spam_quarantine_to = "spam\@meinedomain.de"; $virus_quarantine_to = "spam\@meinedomain.de"; # Set to empty ("") to add no header $X_HEADER_LINE = "Debian $myproduct_name at $mydomain"; # REMAINING IMPORTANT VARIABLES ARE LISTED HERE BECAUSE OF LONGER ASSIGNMENTS # # DO NOT SEND VIRUS NOTIFICATIONS TO OUTSIDE OF YOUR DOMAIN. EVER. # # These days, almost all viruses fake the envelope sender and mail headers. # Therefore, "virus notifications" became nothing but undesired, aggravating # SPAM. This holds true even inside one's domain. We disable them all by # default, except for the EICAR test pattern. # @viruses_that_fake_sender_maps = (new_RE( [qr'\bEICAR\b'i => 0], # av test pattern name [qr/.*/ => 1], # true for everything else )); @keep_decoded_original_maps = (new_RE( # qr'^MAIL$', # retain full original message for virus checking (can be slow) qr'^MAIL-UNDECIPHERABLE$', # recheck full mail if it contains undecipherables qr'^(ASCII(?! cpio)|text|uuencoded|xxencoded|binhex)'i, # qr'^Zip archive data', # don't trust Archive::Zip )); # for $banned_namepath_re, a new-style of banned table, see amavisd.conf-sample $banned_filename_re = new_RE( # qr'^UNDECIPHERABLE$', # is or contains any undecipherable components # block certain double extensions anywhere in the base name qr'\.[^./]*\.(exe|vbs|pif|scr|bat|cmd|com|cpl|dll)\.?$'i, qr'\{[0-9a-f]{8}(-[0-9a-f]{4}){3}-[0-9a-f]{12}\}?'i, # Windows Class ID CLSID, strict qr'^application/x-msdownload$'i, # block these MIME types qr'^application/x-msdos-program$'i, qr'^application/hta$'i, # qr'^application/x-msmetafile$'i, # Windows Metafile MIME type # qr'^\.wmf$', # Windows Metafile file(1) type # qr'^message/partial$'i, qr'^message/external-body$'i, # rfc2046 MIME types # [ qr'^\.(Z|gz|bz2)$' => 0 ], # allow any in Unix-compressed # [ qr'^\.(rpm|cpio|tar)$' => 0 ], # allow any in Unix-type archives # [ qr'^\.(zip|rar|arc|arj|zoo)$'=> 0 ], # allow any within such archives qr'.\.(exe|vbs|pif|scr|bat|cmd|com|cpl)$'i, # banned extension - basic # qr'.\.(ade|adp|app|bas|bat|chm|cmd|com|cpl|crt|emf|exe|fxp|grp|hlp|hta| # inf|ins|isp|js|jse|lnk|mda|mdb|mde|mdw|mdt|mdz|msc|msi|msp|mst| # ops|pcd|pif|prg|reg|scr|sct|shb|shs|vb|vbe|vbs| # wmf|wsc|wsf|wsh)$'ix, # banned ext - long # qr'.\.(mim|b64|bhx|hqx|xxe|uu|uue)$'i, # banned extension - WinZip vulnerab. qr'^\.(exe-ms)$', # banned file(1) types # qr'^\.(exe|lha|tnef|cab|dll)$', # banned file(1) types ); # See http://support.microsoft.com/default.aspx?scid=kb;EN-US;q262631 # and http://www.cknow.com/vtutor/vtextensions.htm # ENVELOPE SENDER SOFT-WHITELISTING / SOFT-BLACKLISTING @score_sender_maps = ({ # a by-recipient hash lookup table, # results from all matching recipient tables are summed # ## per-recipient personal tables (NOTE: positive: black, negative: white) # 'user1@example.com' => [{'bla-mobile.press@example.com' => 10.0}], # 'user3@example.com' => [{'.ebay.com' => -3.0}], # 'user4@example.com' => [{'cleargreen@cleargreen.com' => -7.0, # '.cleargreen.com' => -5.0}], ## site-wide opinions about senders (the '.' matches any recipient) '.' => [ # the _first_ matching sender determines the score boost new_RE( # regexp-type lookup table, just happens to be all soft-blacklist [qr'^(bulkmail|offers|cheapbenefits|earnmoney|foryou)@'i => 5.0], [qr'^(greatcasino|investments|lose_weight_today|market\.alert)@'i=> 5.0], [qr'^(money2you|MyGreenCard|new\.tld\.registry|opt-out|opt-in)@'i=> 5.0], [qr'^(optin|saveonlsmoking2002k|specialoffer|specialoffers)@'i => 5.0], [qr'^(stockalert|stopsnoring|wantsome|workathome|yesitsfree)@'i => 5.0], [qr'^(your_friend|greatoffers)@'i => 5.0], [qr'^(inkjetplanet|marketopt|MakeMoney)\d*@'i => 5.0], ), # read_hash("/var/amavis/sender_scores_sitewide"), { # a hash-type lookup table (associative array) 'nobody@cert.org' => -3.0, 'cert-advisory@us-cert.gov' => -3.0, 'owner-alert@iss.net' => -3.0, 'slashdot@slashdot.org' => -3.0, 'securityfocus.com' => -3.0, 'ntbugtraq@listserv.ntbugtraq.com' => -3.0, 'security-alerts@linuxsecurity.com' => -3.0, 'mailman-announce-admin@python.org' => -3.0, 'amavis-user-admin@lists.sourceforge.net'=> -3.0, 'amavis-user-bounces@lists.sourceforge.net' => -3.0, 'spamassassin.apache.org' => -3.0, 'notification-return@lists.sophos.com' => -3.0, 'owner-postfix-users@postfix.org' => -3.0, 'owner-postfix-announce@postfix.org' => -3.0, 'owner-sendmail-announce@lists.sendmail.org' => -3.0, 'sendmail-announce-request@lists.sendmail.org' => -3.0, 'donotreply@sendmail.org' => -3.0, 'ca+envelope@sendmail.org' => -3.0, 'noreply@freshmeat.net' => -3.0, 'owner-technews@postel.acm.org' => -3.0, 'ietf-123-owner@loki.ietf.org' => -3.0, 'cvs-commits-list-admin@gnome.org' => -3.0, 'rt-users-admin@lists.fsck.com' => -3.0, 'clp-request@comp.nus.edu.sg' => -3.0, 'surveys-errors@lists.nua.ie' => -3.0, 'emailnews@genomeweb.com' => -5.0, 'yahoo-dev-null@yahoo-inc.com' => -3.0, 'returns.groups.yahoo.com' => -3.0, 'clusternews@linuxnetworx.com' => -3.0, lc('lvs-users-admin@LinuxVirtualServer.org') => -3.0, lc('owner-textbreakingnews@CNNIMAIL12.CNN.COM') => -5.0, # soft-blacklisting (positive score) 'sender@example.net' => 3.0, '.example.net' => 1.0, }, ], # end of site-wide tables }); 1; # ensure a defined return (END) -->schnapp<-- In der Datei habe ich das so eingestellt, das eMails die als Virus verdächtigt werden an die Adressse spam@meinedomain.de gesendet werden. Damit ist sichergestellt das keine Viren in das lokale Netz kommen können. Ein Quarantäneordner für Spam habe ich hier auf "spam" festgelegt, das heisst es muss einen Nutzer spam geben. Der Eintrag sieht so aus: $QUARANTINEDIR = "/var/spool/mail/spam"; Wichtig: Damit alle Daten erkannt werden müssen die Einstellungen wir folgt aktiviert werden: postmap /etc/postfix/virtusertable postmap /etc/postfix/sasl_passwd postmap /etc/postfix/sender_relay postmap /etc/aliases newaliases und danach Postfix neu starten: /etc/init.d/postfix reload /etc/init.d/postfix restart
Update zu Debian 6.0 Squeeze
Bei der Installation eines Mailservers auf Squeeze kommen einige
Besonderheiten dazu.
Damit die Virenprüfung mit Amavisd korrekt läuft muss in der Datei
amavis.conf
folgender Eintrag erfolgen:
$pid_file = '$MYHOME/amavisd.pid;
Hier zeigt man dem System wo die PID Datei liegen soll.
Ohne diesen Eintrag hagelt es Fehlermeldungen in der Log Datei
und die eMails werden nicht zugestellt, weil sie nicht durch
die Virenprüfung laufen.
Damit man die .forward Datei im Heimatverzeichnis
der Benutzer nutzen kann müssen folgende Rechte gesetzt sein:
chown root.nobody .forward
chmod 764 .forward
Bei dem Client, z.b. Thunderbird muss beim SMTP eingestellt sein,
das der Server TLS benötigt, aber kein Benutzername oder Kennwort
(war bei Debian 5 nötig)!
Wenn in der mail.info massenhaft Fehlermeldungen in Zusammenhang mit Postdrop
stehen, passt hier eine Berechtigung nicht.
Abhilfe:
chmod -R 777 /var/spool/postfix
Kopie aller Mails an eine Adresse
Wenn man eine Kopie aller eMails die das System durchläuft auf
eine Adresse bekommen möchte, muss man folgenden eintrag in die main.cf setzten:
always_bcc = meineemailadressse
Damit die eMails aber nicht doppelt ankommen, weil sie noch auf Viren geprüft werden,
sollte man die main.cf um diesen Wert ergänzen:
enable_original_recipient = No
eMail mit Umlauten wird nicht zu jeder Domain zugestellt
Eine eMail mit Umlauten im Text wurde nicht zu allen Zieldomains zugestellt.
Fehlermeldungen wurden aber in der mail.info auch nicht verzeichnet.
Lösung ist das die Zieldomain einen zu alten Exchange Server nutzt und
dieser die Mime Verschlüsselung nicht korrekt erkennt.
Folgender Eintrag in der main.cf löste das Problem:
smtp_discard_ehlo_keywords = 8bitmime
smtpd_discard_ehlo_keywords = 8bitmime
eMails kommen nicht überall an ... sender_canonincal_maps
Bei dem eingerichteten Mailserver kommen nicht alle eMails überall an.
Es zeigt sich das manche Empfänger den Header genau prüfen um Spam-Emails
zu erkennen. Wenn da ein falscher Absender steht, führt das zu Problemen.
In der main.cf von Postfix habe ich diese Zeile hinzugefügt:
sender_canonical_maps = hash:/etc/postfix/sender_canonical
Die Datei sender_canonical hat diesen Aufbau:
user user@domain.de
Beispiel:
andre andre@nitschke-marl.de
Dovecot statt uw-imapd
Weil es stetig Probleme gab im Zusammenspiel von uw-imapd und iPhones,
z.b. sind gelöschte eMails wieder aufgetaucht oder auch die mbox Datei
wurde beschädigt, habe ich mich entschlossen auf dovecot zu setzten.
Da der Bug bekannt ist, aber mit einer Lösung wohl nicht mehr gerechnet
werden kann (http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=557103)
habe ich Dovecot auf dem Debian Mailserver installiert.
Zur Installation nutze ich aptitude, welches gleich die nicht mehr benötigten
Pakete von uwmap-d entfernt hat.
Zum Login auf dem Mailserver wurde wie unter uw-imapd auch die Nutzernamen und Kennwörter
benutzt die auf dem Debian System hinterlegt sind.
In der Grundeinstellung wurden aber keine Verzeichnisstruktur angezeigt.
Der Grund ist dieser:
dovecot speichert die Mails in ~/mail/ und uwimapd nur in ~/
somit habe ich folgende Zeilen eingetragen in die /etc/dovecot/dovecot.conf:
mail_location = mbox:~/mail/:INBOX=/var/mail/%u
mail_full_filesystem_access = yes
ich hätte auch mbox:~/ eingeben können und dann hätt er sofort alle Mails von
dem alten uwimapd übernommen, aber auch alle anderen Dateien angezeigt. So
habe ich alle Verzeichnisse und Dateien mit Mails in das Verzeichnis "mail" verschoben
und der nutzer sieht nur seine eMails und mehr nicht.
Fetchmail an POP mit unbekannten SSL
Nachdem sich die Fehlermeldungen in der Log Datei häuften,
das fetchmail den SSL Schlüssel nicht kennt, habe ich diesen
per Hand hinzugefügt.
Die Fehler sahen so aus:
Jan 20 01:57:35 server2 fetchmail[27210]: Warnung: Die Verbindung ist unsicher, mache trotzdem weiter. (Nehmen Sie lieber --sslcertck!)
Jan 20 01:57:35 server2 fetchmail[27210]: Fehler bei Server-Zertifikat-Überprüfung: self signed certificate
Zunächst hab ich mir die Fingerprints anzeigen lassen mit:
fetchmail -v -f /etc/.fetchmailrc
Dort habe ich mir die zu dem Mailserver passenden Fingerprints
abgeschrieben und in der .fetchmailrc eingetragen nach diesem Muster:
options ssl sslfingerprint "00:00:00:00:00:00:00:00:00:00:00:00:00:00:00:00"
Anschliesend hab ich fetchmail neu gestartet und die Fehler waren verschwunden.
Header Analysieren und nach Keywords umleiten
Um eMails vor dem Empfang aber auch vor dem Empfang umzuleiten kann man
den Header nach Schlüsselwörtern durchsuchen und danach dann eine Regel
abarbeiten lassen. Die Schlüsselwörter können auch eMail Adressen oder Teile davon
sein, so das diese Methode auch zum Abfangen oder als Urlaubsvertretung brauchbar ist.
Die main.cf habe ich um folgende Zeile erganzt:
header_checks = regexp:/etc/postfix/header_checks
In der Datei header_checks kann ich nun nach Ausdrücken suchen lassen,
und dafür eine Weiterleitungsregel hinterlegen.:
/^(To|From|Cc|Reply-To):.*DASISTDASSUCHWORT*/ REDIRECT andre@nitschke-marl.de
Diese Zeile sucht in dem Empfänger oder Absender-Feld das Suchwort und leitet bei Bedarf
an die hinterlegte Adresse weiter.
. in der Domain verhindert Empfang
Wenn in der Logdatei eine falsche eMail Auftauch und ein . im Domainname
ist folgende Datei zu prüfen:
/etc/mailname
Postfix Port 587 für Submission nutzt.
Das Problem ist, das der Port 25 (den ich bisher genutzt habe) nur für die Kommunikation der Server untereinander vorgesehen ist. \\Grade in anderne Ländern wird durch die Provider der Port 25 gesperrt, so das man hier keine Mail an den eigenen Server ausliefern kann. Hierfür ist dann Port 587 vorgesehen.
Um die submission Funktion zu nutzen muss man die Datei
/etc/postfix/main.cf
bearbeiten. Hier werden 4 Zeilen auskommentiert.
submission inet n - - - - smtpd
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restriction=permit_sasl_authenticated,reject
Anschliessend muss Postfix noch neu gestartet werden
/etc/init.d/postfix restart
Falls der Mailserver hinter einer Firewall steht muss man noch darauf achten,
das man dort eine Portweiterleitung für den Port 587 einrichtet.
Die Clients können nun entsprechend angepasst werden, wobei hier 587 als Port und das Protokoll STARTTLS auszuwählen ist.
Wenn es Probleme beim Verstand gibt und der Mailserver per SMTP nicht annehmen möchte
kann man den Relayhost noch auf den Port 587 erzwingen:
relayhost = [h1753170.stratoserver.net]:587
Zertifikatsfehler bei Outlook
Das Problem des Zertifikatsfehlers bei Outlook hat mich lange befasst,
bis ich eine Lösung hatte.
Der Fehler kam immer beim Start von Outlook und betraf bisher alle Postfix Versionen
mit denen ich zu tun hatte.
Diese Lösung habe ich unter Ubuntu 16.04 getestet. Andere Versionen sollten ähnlich sein.
Als erstes habe ich die ssl-cert-snakeoil.pem Datei von Ubuntu Server aus
/etc/ssl/certs
kopiert und auf den Windows PC übertragten.
Hier habe ich diese dann in ubuntuserver.crt umbenannt und mittels Internet-Explorer
unter die Vertrauenswürdigen Zertifikate importiert.
(Werkzeuge -> Optionen -> Inhalt -> Zertifikate)
Bei Outlook habe ich das Zertifikat dann auch beim Start automatisch
importieren lassen.
Dovecot und Postfix sind etwas tricky, da Dovecot andere Zertifikate verwendet wie Postfix. Ich habe
daher folgende Datei bearbeitet:
/etc/dovecot/conf.d/10-ssl.conf
und mit folgenden Zeilen ergänzt (bzw. geändert wenn diese schon bestehen):
ssl_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
ssl_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
Ein Neustart von Dovecot und schon funktioniert es.
Wichtig ist hier, das man den Mailserver nicht mit IP sondern mit den hostnamen anspricht,
damit Outlook hier keinen Fehler ausgibt.
DKIM fuer Postfix einrichten
Die grundlegende Installation ist schnell gemacht:
apt-get install opendkim opendkim-tools
Die erste Konfigurationsdatei die wir bearbeiten ist
/etc/opendkim.conf
Hier werden folgende Zeiten an der Datei angehängt:
AutoRestart Yes
AutoRestartRate 10/1h
UMask 002
Syslog yes
SyslogSuccess Yes
LogWhy Yes
Canonicalization relaxed/simple
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
KeyTable refile:/etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
Mode sv
PidFile /var/run/opendkim/opendkim.pid
SignatureAlgorithm rsa-sha256
UserID opendkim:opendkim
Socket inet:12301@localhost
Als nächstes wird die Datei
/etc/default/opendkim
Hier wird folgende Zeile eingefügt, bzw. angepasst:
SOCKET="inet:12301@localhost"
In der Datei
/etc/postfix/main.cf
Müssen folgende Zeilen eingefügt werden:
milter_protocol = 2
milter_default_action = accept
smtpd_milters = inet:localhost:12301
non_smtpd_milters = inet:localhost:12301
Anschliessend muessen noch folgende Verzeichnisse erstellt werden:
mkdir /etc/opendkim
mkdir /etc/opendkim/keys
Nun erstellen wir eine Datei
/etc/opendkim/TrustedHosts
mit folgendem Inhalt:
127.0.0.1
localhost
192.168.178.1/24
*.nitschke-marl.de
Und folgende Datei
/etc/opendkim/KeyTable
mit diesem Inhalt:
mail._domainkey.nitschke-marl.de nitschke-marl.de:mail:/etc/opendkim/keys/nitschke-mail.de/mail.private
Sowie folgende Datei
/etc/opendkim/SigningTable
mit diesem Inhalt:
*@example.com mail._domainkey.nitschke-marl.de
Anschliessend werden die neuen keys generiert
cd /etc/opendkim/keys
mkdir nitschke-marl.de
opendkim-genkey -s mail -d nitschke-marl.de
Anschliessend folgende Textdatei
/etc/opendkim/keys/mail.txt
Den String für die Zonefile herauskopieren
Beispiel:
mail._domainkey IN TXT "v=DKIM1; k=rsa; \\p=XIGffA04CSqGatb3EQEBAWUgG4GTADVB5QKxgQC3N3lnvv"XgOCAAoqn+awTpE+iPPcKOOpo8REbcFeCQQV10Hxo4PhCoAASa2VHOjD444efKXhQjM7iKFRTuBatE7OQWERT1CJpNuIdASDFGSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB" ; ----- DKIM key mail for nitschke-marl.de
Zum Abschluss fehlt nur noch
service postfix restart
service opendkim restart
Versand ohne plain text über Postfix
Folgende Einstellung habe ich an der main.cf ergänst:
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
# optional zur Fehlersuche
smtp_tls_loglevel = 1
This page may have a more recent version on pmwiki.org: PmWiki:Einrichten, and a talk page: PmWiki:Einrichten-Talk.