{"id":276,"date":"2010-03-27T02:09:19","date_gmt":"2010-03-27T01:09:19","guid":{"rendered":"http:\/\/www.daniel-ritter.de\/blog\/?p=276"},"modified":"2024-05-13T01:15:16","modified_gmt":"2024-05-12T23:15:16","slug":"spickzettel-debian-lenny-mailserver-postfix-ssl-courier-ssl-sasl-tls-md5-cram-virtualaliases-procmail-clamav-spamassassin","status":"publish","type":"post","link":"https:\/\/www.daniel-ritter.de\/blog\/spickzettel-debian-lenny-mailserver-postfix-ssl-courier-ssl-sasl-tls-md5-cram-virtualaliases-procmail-clamav-spamassassin\/","title":{"rendered":"Howto Spickzettel: Debian Lenny Mailserver: Postfix-SSL Courier-SSL SASL TLS MD5-CRAM VirtualAliases Procmail ClamAV Spamassassin"},"content":{"rendered":"<p><a href=\"https:\/\/www.daniel-ritter.de\/blog\/wp-content\/uploads\/2010\/03\/debian_lenny_mailserver.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-292\" title=\"debian_lenny_mailserver\" src=\"https:\/\/www.daniel-ritter.de\/blog\/wp-content\/uploads\/2010\/03\/debian_lenny_mailserver.jpg\" alt=\"\" width=\"600\" height=\"449\" srcset=\"https:\/\/www.daniel-ritter.de\/blog\/wp-content\/uploads\/2010\/03\/debian_lenny_mailserver.jpg 600w, https:\/\/www.daniel-ritter.de\/blog\/wp-content\/uploads\/2010\/03\/debian_lenny_mailserver-300x224.jpg 300w\" sizes=\"auto, (max-width: 600px) 100vw, 600px\" \/><\/a><\/p>\n<p>Ich hatte immer mal wieder mit Mailservern zu tun. Leider war ich h\u00e4ufiger etwas verwirrt, da &#8211; je nach Setup &#8211; sehr viele verschiedene Komponenten miteinander kommunizieren m\u00fcssen. Aus diesem Grund hier mein Spickzettel f\u00fcr einen Mailserver auf einem Internethost mit FQDN. Ausprobiert wurde es auf einem Debian Lenny.<\/p>\n<p>Alle Verbindungen nach au\u00dfen sind verschl\u00fcsselt oder mit MD5-Cram Pasword Hashes verschleiert. Eingehende Mail wird auf Spam und Viren gepr\u00fcft und Benutzer k\u00f6nnen ihre Mail \u00fcber IMAP lesen.<\/p>\n<p>Im Bild oben sind<span style=\"color: #ffcc00;\"> Daemons gelb<\/span>, <span style=\"color: #999999;\">Datenbanken grau<\/span> und <span style=\"color: #339966;\">gesichtere Verbindungen gr\u00fcn<\/span>.<\/p>\n<p><span style=\"text-decoration: underline;\">Was machen die einzelnen Komponenten?<\/span><\/p>\n<ul>\n<li><strong>Postfix<\/strong> empf\u00e4ngt Mails, die Clients versenden wollen. Diese leitet er weiter an den richtigen Server im Internet. Au\u00dferdem entf\u00e4ngt Postfix Mails aus dem Internet f\u00fcr Benutzer mit Mailboxen auf dem Server.<\/li>\n<li><strong>VirtualAliases(Teil von Postfix) <\/strong> ist eine Datenbank mit der Postfix empfangene Mails den einzelnen Mailusern zuordnen kann.<\/li>\n<li><strong>Saslauthd <\/strong>authentifiziert User die Mail \u00fcber Postfix per SMTP verschicken wollen. Er \u00fcberpr\u00fcft Username und Passwort mit MD5-Cram Hashes.<\/li>\n<li><strong>Sasldb <\/strong>ist die Datenbank, aus der Saslauthd Usernamen und Passw\u00f6rter anfragen kann.<\/li>\n<li><strong>Courier-IMAP <\/strong>stellt dem Mailclient eines Nutzers die Mails aus seinem Maildir zur Verf\u00fcgung<\/li>\n<li><strong>Courier-Authdaemon <\/strong>authentifiziert\u00a0 User, die Mail \u00fcber den Courier-IMAP lesen. Er \u00fcberpr\u00fcft Username und Passwort mit MD5-Cram Hashes.<\/li>\n<li><strong>Userdb (Teil von Courier) <\/strong>ist die Datenbank, aus der Courier-Authdaemon Usernamen und Passw\u00f6rter anfragen kann.<\/li>\n<li><strong>Procmail<\/strong> ist ein Filter, durch den jede eingehende Mail laufen muss. Procmail reicht die Mail an den Spamfilter und den Virenscanner durch und liefert sie danach an den User aus.<\/li>\n<li><strong>Clamassassin <\/strong>ist ein kleines Tool, das eine Schnittstelle zwischen Procmail und ClamAV bildet. Es reicht die Mails nur durch an ClamAV.<\/li>\n<li><strong>Spamassassin (spamd) <\/strong>Spamchecker. Gibt jeder Mail einen Score, der aussagt wie wahrscheinlich es ist, dass die \u00fcberpr\u00fcfte Mail SPAM ist.<\/li>\n<li><strong>Maildir Mailbox <\/strong>Hier liegen die Mails der Benutzer des Systems. Es ist ein normales Verzeichnis im Dateisystem. IMAP-Clients k\u00f6nnen sie von hieraus abrufen.<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;\">Vorbereitung<\/span><\/p>\n<p>Alle ben\u00f6tigten Pakete installieren<\/p>\n<pre>apt-get update &amp;&amp; apt-get upgrade\r\napt-get install postfix postfix-doc postfix libsasl2-2 sasl2-bin libsasl2-modules courier-imap-ssl procmail spamassassin clamav clamassassin<\/pre>\n<p>Konfigfragen von Courier<\/p>\n<ul>\n<li>Verzeichnisse f\u00fcr WWW-Administration? Nein<\/li>\n<\/ul>\n<p>Konfigfragen von Postfix<\/p>\n<ul>\n<li>Internet-Server<\/li>\n<li>E-Mail-Name:\u00a0 Der per DNS aufl\u00f6sbare FQDN des Servers (z.B. meinedomain.de)<\/li>\n<\/ul>\n<p>Konfiguration von Postfix fortsetzten<\/p>\n<pre>dpkg-reconfigure postfix<\/pre>\n<p>Weitere Konfigfragen von Postfix<\/p>\n<ul>\n<li>Internet-Server<\/li>\n<li>An wen sollen Mails f\u00fcr root weitergeleitet werden: Nichts eintragen, kommt sp\u00e4ter.<\/li>\n<li>Rechner f\u00fcr die dieser Rechner als Zielsystem gilt: Alle Domains die mit Postfix Mails empfangen k\u00f6nnen und die einen DNS-Eintrag f\u00fcr die IP des Servers haben. (z.B. meinedomain.de, meinanderedomain.de, meinedrittedomain.de)<\/li>\n<\/ul>\n<p><span style=\"text-decoration: underline;\">Postfix<\/span><\/p>\n<p>Configdatei f\u00fcr Postfix<\/p>\n<pre># \/etc\/postfix\/main.cf\r\n\r\nsmtpd_banner = $myhostname ESMTP $mail_name (Debian\/GNU)\r\nbiff = no\r\nappend_dot_mydomain = no\r\nreadme_directory = \/usr\/share\/doc\/postfix                                 \r\n\r\n# TLS aktivieren\r\nsmtpd_use_tls=yes                                                         \r\n\r\nsmtpd_tls_session_cache_database = btree:${data_directory}\/smtpd_scache\r\nsmtp_tls_session_cache_database = btree:${data_directory}\/smtp_scache\r\nmyhostname = meinedomain.de\r\nalias_maps = hash:\/etc\/aliases\r\nalias_database = hash:\/etc\/aliases\r\nmyorigin = \/etc\/mailname\r\nmydestination = meinedomain.de, meineanderedomain, meinedrittedomain , localhost, 127.0.0.1\r\nrelayhost =\r\nmynetworks = 127.0.0.0\/8 [::ffff:127.0.0.0]\/104 [::1]\/128\r\nmailbox_size_limit = 0\r\nrecipient_delimiter = +\r\ninet_interfaces = all\r\nhtml_directory = \/usr\/share\/doc\/postfix\/html\r\ninet_protocols = ipv4\r\n\r\n# Auth \u00fcber SASL\r\nsmtpd_sasl_auth_enable = yes\r\nbroken_sasl_auth_clients = yes\r\n# Nur User Mail versenden lassen, die in SASL-DB stehen, nur MD5-Passw\u00f6rter erlauben\r\nsmtp_sasl_security_options = noanonymous, noplaintext\r\n\r\n# Nur Localhost (mynetworks) und \u00fcber SASL angemeldete User d\u00fcrfen Mails verschicken\r\nsmtpd_recipient_restrictions = permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination\r\nsmtpd_sasl_local_domain =\r\n\r\n# Nur verschl\u00fcsselt Authentifizieren mit TLS\r\nsmtp_tls_auth_only = yes\r\n\r\n#TLS aktivieren\r\nsmtp_use_tls = yes\r\nsmtpd_use_tls = yes\r\nsmtp_tls_note_starttls_offer = yes\r\n\r\n# Selbstgenerierter Schl\u00fcssel und das Zertifikat\r\nsmtpd_tls_key_file = \/etc\/postfix\/cert\/smtpd.key\r\nsmtpd_tls_cert_file = \/etc\/postfix\/cert\/smtpd.crt\r\nsmtpd_tls_CAfile = \/etc\/postfix\/cert\/cacert.pem\r\n\r\n# SP\u00e4ter auf 0 setzen, gut zum debuggen\r\nsmtpd_tls_loglevel = 1\r\nsmtpd_tls_received_header = yes\r\nsmtpd_tls_session_cache_timeout = 3600s\r\ntls_random_source = dev:\/dev\/urandom\r\n\r\n# Mails in Maildirs ausliefern\r\nhome_mailbox = Maildir\/\r\n\r\n# Dateiname der Virtual-Alias-Map mit der Zuordnung von E-Mail-Adresse zu lokaler Mailbox\r\nvirtual_alias_maps = hash:\/etc\/postfix\/virtual\r\n\r\n# Mail wird nicht direkt in Mailboxen gelegt sondern an Procmail \u00fcbergeben\r\nmailbox_command = procmail -a \"$EXTENSION\"<\/pre>\n<p><span style=\"text-decoration: underline;\">SASL<\/span><\/p>\n<p>SASL stellt f\u00fcr verschiedene Daemons einen Authentifizierungsmechanismus zur Verf\u00fcgung. In diesem Setup werden in einer SASL-Datenbank die Benutzer gespeichert, die \u00fcber unseren Postfix Post verschicken d\u00fcrfen. (Also der Username und das Passwort, die im E-Mail-Client als Zugangsdaten f\u00fcr den SMTP-Server eingetragen werden m\u00fcssen)<\/p>\n<p>Konfigdatei f\u00fcr SASL erstellen<\/p>\n<pre># \/etc\/postfix\/smtpd.conf\r\npwcheck_method: authdaemond\r\nmech_list: CRAM-MD5<\/pre>\n<p>Postfix kann leider noch nicht den saslauthd benutzen um Benutzerdaten zu \u00fcberpr\u00fcfen, da Postfix in einer chroot-Umgebung l\u00e4uft und noch keinen Zugriff auf den saslauthd hat.<\/p>\n<pre># \/etc\/default\/saslauthd\r\nSTART=yes\r\nDESC=\"SASL Authentication Daemon\"\r\nNAME=\"saslauthd\"\r\nMECHANISMS=\"pam\"\r\nMECH_OPTIONS=\"\"\r\nTHREADS=5\r\n\r\n# Mit -m legen wir das Socket von saslauthd in ein Verzeichnis, das Postfix aus dem chroot erreichen kann.\r\nOPTIONS=\"-c -m \/var\/spool\/postfix\/var\/run\/saslauthd\"<\/pre>\n<p>Danach muss noch im &#8222;start-instance&#8220;-Block von \/etc\/init.d\/saslauthd der Ort f\u00fcr die PID ge\u00e4ndert werden, auch wieder damit Postfix das PID-File lesen kann.<\/p>\n<pre># \/etc\/init.d\/saslauthd\r\n.\r\n.\r\nPIDFILE=\"\/var\/spool\/postfix\/var\/run\/${NAME}\/saslauthd.pid\"\r\n.\r\n.<\/pre>\n<p><span style=\"text-decoration: underline;\">TLS<\/span><\/p>\n<p>Es k\u00f6nnen nun keine nicht-authentifizierten Sender mehr Mail \u00fcber den Postfix SMTP versenden, allerdings gehen die Mails noch im Klartext durch LAN und Internet. Die TLS-Verschl\u00fcsselung wurde bereits oben in der Postfix-Konfigdatei main.cf aktiviert. Allerdings fehlen noch Key und Zertifikat.<\/p>\n<pre>mkdir \/etc\/postfix\/cert\r\ncd \/etc\/postfix\/cert\r\n\r\nopenssl genrsa -des3 -rand \/etc\/hosts -out .\/smtpd.key 1024\r\nchmod 600 .\/smtpd.key\r\nopenssl req -new -key .\/smtpd.key -out .\/smtpd.csr\r\nopenssl x509 -req -days 99999 -in .\/smtpd.csr -signkey .\/smtpd.key -out .\/smtpd.crt\r\nopenssl rsa -in .\/smtpd.key -out .\/smtpd.key.tmp\r\nmv -f .\/smtpd.key.tmp .\/smtpd.key\r\nchmod 600 .\/smtpd.key\r\nopenssl req -new -x509 -extensions v3_ca -keyout .\/cakey.pem -out .\/cacert.pem -days 99999<\/pre>\n<p><span style=\"text-decoration: underline;\">SASL DB erstellen<\/span><\/p>\n<p>Mails werden nun bei der \u00dcbertragung verschl\u00fcsselt, Usernamen und Passw\u00f6rter f\u00fcr den Mailversand \u00fcber den SMTP-Server gehen jedoch noch im Klartext durchs Internet. Diese kann man zumindest mit der MD5-Cram-Methode kaschieren. Diese wurde bereits in der \/etc\/postfix\/smtpd.conf aktiviert. Es fehlt nur noch die SASL-Datenbank selbst. Diese legt man an, indem man einfach einem sp\u00e4teren Mailuser einen Usernamen und ein Passwort gibt.<\/p>\n<pre># F\u00fcr Username einen lokalen Mailuser einsetzen um die SASL-DB zu erstellen mit einem ersten Benutzer\r\nsaslpasswd2 <em>username<\/em><\/pre>\n<p>Postfix ist fertig. Er kann Mails empfangen und verschicken. Verbindungen zu Clients und anderen Mailservern sind verschl\u00fcsselt.<\/p>\n<p><span style=\"text-decoration: underline;\">Courier<\/span><\/p>\n<p>Couriers Konfigdateien<\/p>\n<pre># \/etc\/courier\/authdaemonrc\r\n\r\n# UserDB zur authentifizierung benutzen\r\nauthmodulelist=\"authuserdb\"\r\n\r\nauthmodulelistorig=\"authuserdb authpam authpgsql authldap authmysql authcustom authpipe\"\r\ndaemons=5\r\nauthdaemonvar=\/var\/run\/courier\/authdaemon\r\n\r\n# Gut zum debuggen\r\nDEBUG_LOGIN=2\r\nDEFAULTOPTIONS=\"\"\r\nLOGGEROPTS=\"\"<\/pre>\n<pre>#\/etc\/courier\/authmodulelist\r\n\r\n# courierauthdaemon nutzt MD5-cram\r\nauthcram<\/pre>\n<pre># \/etc\/courier\/imapd\r\n\r\nADDRESS=0\r\nPORT=143\r\nMAXDAEMONS=40\r\nMAXPERIP=20\r\nPIDFILE=\/var\/run\/courier\/imapd.pid\r\nTCPDOPTS=\"-nodnslookup -noidentlookup\"\r\nLOGGEROPTS=\"-name=imapd\"\r\n\r\n#Hier wird AUTH=CRAM-MD5 hinzugef\u00fcgt\r\n\r\nIMAP_CAPABILITY=\"IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 IDLE\"\r\n\r\nIMAP_KEYWORDS=1\r\nIMAP_ACL=1\r\nIMAP_CAPABILITY_ORIG=\"IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 AUTH=CRAM-SHA1 AUTH=CRAM-SHA256 IDLE\"\r\nIMAP_PROXY=0\r\nIMAP_PROXY_FOREIGN=0\r\nIMAP_IDLE_TIMEOUT=60\r\nIMAP_MAILBOX_SANITY_CHECK=1\r\nIMAP_CAPABILITY_TLS=\"$IMAP_CAPABILITY AUTH=PLAIN\"\r\nIMAP_CAPABILITY_TLS_ORIG=\"$IMAP_CAPABILITY_ORIG AUTH=PLAIN\"\r\nIMAP_DISABLETHREADSORT=0\r\nIMAP_CHECK_ALL_FOLDERS=0\r\nIMAP_OBSOLETE_CLIENT=0\r\nIMAP_UMASK=022\r\nIMAP_ULIMITD=65536\r\nIMAP_USELOCKS=1\r\nIMAP_SHAREDINDEXFILE=\/etc\/courier\/shared\/index\r\nIMAP_ENHANCEDIDLE=0\r\nIMAP_TRASHFOLDERNAME=Trash\r\nIMAP_EMPTYTRASH=Trash:7\r\nIMAP_MOVE_EXPUNGE_TO_TRASH=0\r\nSENDMAIL=\/usr\/sbin\/sendmail\r\nHEADERFROM=X-IMAP-Sender\r\nIMAPDSTART=YES\r\nMAILDIRPATH=Maildir<\/pre>\n<pre>SSLPORT=993\r\nSSLADDRESS=externe.ip.des.servers\r\nSSLPIDFILE=\/var\/run\/courier\/imapd-ssl.pid\r\nSSLLOGGEROPTS=\"-name=imapd-ssl\"\r\nIMAPDSSLSTART=YES\r\nIMAPDSTARTTLS=YES\r\nIMAP_TLS_REQUIRED=1\r\nCOURIERTLS=\/usr\/bin\/couriertls\r\nTLS_KX_LIST=ALL\r\nTLS_COMPRESSION=ALL\r\nTLS_CERTS=X509\r\nTLS_CERTFILE=\/etc\/courier\/imapd.pem\r\nTLS_TRUSTCERTS=\/etc\/ssl\/certs\r\nTLS_VERIFYPEER=NONE\r\nTLS_CACHEFILE=\/var\/lib\/courier\/couriersslcache\r\nTLS_CACHESIZE=524288\r\nMAILDIRPATH=Maildir\r\n\r\n# Auch hier kommt AUTH=CRAM-MD5 hinzu\r\n\r\nIMAP_CAPABILITY=\"IMAP4rev1 UIDPLUS CHILDREN NAMESPACE THREAD=ORDEREDSUBJECT THREAD=REFERENCES SORT QUOTA AUTH=CRAM-MD5 IDLE\"<\/pre>\n<p><span style=\"text-decoration: underline;\">Spamassassin<\/span><\/p>\n<p>Spamassassin muss aktiviert werden<\/p>\n<pre># \/etc\/default\/spamassassin\r\nENABLED=1\r\nOPTIONS=\"--create-prefs --max-children 5 --helper-home-dir\"\r\nPIDFILE=\"\/var\/run\/spamd.pid\"\r\nCRON=0<\/pre>\n<p><span style=\"text-decoration: underline;\">Procmail<\/span><\/p>\n<p>Nachdem Postfix Mails aus dem Internet f\u00fcr einen lokalen Benutzer empfangen hat, \u00fcbergibt er sie an procmail. Procmail wiederum \u00fcbergibt die Mail an Spamassassin um sie auf Spam zu \u00fcberpr\u00fcfen und an clamassassin, der sie weiterreicht an den Virenscanner clamav.<\/p>\n<pre># Eine Beispiel .procmailrc f\u00fcr die Homeverzeichnisse der Mailuser\r\n\r\nPATH=$HOME\/bin:\/usr\/bin:\/bin:\/usr\/local\/bin:.\r\nMAILDIR=$HOME\/Maildir\/\r\nDEFAULT=$HOME\/Maildir\/new\r\nLOGFILE=$HOME\/procmail.log\r\n\r\n# SPAMASSASSIN\r\n:0fw: \/var\/run\/spam.lock\r\n* &lt; 256000\r\n| spamc -f -u $LOGNAME\r\n\r\n# Alle SPAMS mit Score 10-99 gleich weg\r\n:0:\r\n* ^X-Spam-Status: Yes, score=[1-9][0-9]\\.\r\n\/dev\/null\r\n\r\n# Alle SPAMS mit Score &gt; 3 gleich weg\r\n#:0:\r\n#* ^X-Spam-Status: Yes, score=[4-9]\\.\r\n#\/dev\/null\r\n\r\n:0fw\r\n| \/usr\/bin\/clamassassin\r\n\r\n# Rewrite Subject Line, if SpamLevel is high enough.\r\n:0fw\r\n* ^X-Virus-Status: Yes\r\n| sed '1,\/^$\/s@^Subject:@Subject: \/VIRUS!\/@'\r\n\r\n:0:\r\n* ^X-Virus-Status: Yes\r\n\/dev\/null\r\n\r\n# Move SA SPAM MAILS TO SPAM\r\n:0:\r\n* ^X-Spam-Status: Yes\r\n$MAILDIR\/.Spam\/new\r\n\r\n# Alle Mails die es ohne Blessuren bis hier geschafft haben, landen automatisch in der Inbox des Users. \"Sie haben Post!\"<\/pre>\n<p><strong>Puh! Das Mailsystem ist fertig! <\/strong>Es fehlen nur noch Benutzer, die Maildirs und die Konfiguration der Virtual-Aliases um festzulegen welche Email-Adressen in welchen lokalen Mailboxen laden. Das folgende Skript legt den UNIX-Systembenutzer an, und denselben Benutzer noch einmal f\u00fcr Postfix in der SASLdb und f\u00fcr Courier in der Courier-Userdb.<\/p>\n<p>Skript zum anlegen neuer User<\/p>\n<pre># Added einen neuen User zum Mailsystem                      \r\n\r\n#!\/bin\/bash\r\nclear\r\necho \"Neuer User fuer das Mailsystem\";\r\necho \"Username eingeben: \";\r\nread newuser                          \r\n\r\necho $newuser &gt;&gt; \/root\/scripts\/mail\/mail_users.dat\r\n\r\n# Adding Unix User\r\n\r\nadduser --ingroup users --quiet --shell \/bin\/false $newuser\r\n\r\necho\r\necho \"Linux User wurde angelegt.....\"\r\necho\r\n\r\n# Adding Courier Mailboxes\r\n\r\nmaildirmake \/home\/$newuser\/Maildir\r\nmaildirmake -f Spam \/home\/$newuser\/Maildir\r\nmaildirmake -f Virus \/home\/$newuser\/Maildir\r\nmaildirmake -f LerneSpam \/home\/$newuser\/Maildir\r\nmaildirmake -f LerneKeinSpam \/home\/$newuser\/Maildir\r\nmaildirmake -f MeineOrdner \/home\/$newuser\/Maildir\r\nmaildirmake -f Sent \/home\/$newuser\/Maildir\r\nmaildirmake -f Trash \/home\/$newuser\/Maildir\r\nchown -R $newuser.users \/home\/$newuser\/Maildir\r\necho\r\necho \"IMAP Mailverzeichnisse wurden angelegt....\"\r\necho\r\n\r\n# Setting SASL Password for Postfix SMTP auth\r\n\r\necho\r\necho\r\necho \"Passwort f\u00fcr SMTP-Auth angeben (Mails verschicken mit dem Client)\"\r\nsaslpasswd2 $newuser\r\n\r\necho\r\necho\r\necho \"Passwort f\u00fcr Courier angeben (Zuganspasswort f\u00fcr den IMAPSERVER)\"\r\n\r\nNEWUID=`cat \/etc\/passwd | grep $newuser | cut -d: -f3`\r\n\r\nuserdb $newuser set home=\/home\/$newuser uid=$NEWUID gid=100\r\nuserdbpw -hmac-md5 | userdb $newuser set imap-hmac-md5pw home=\/home\/$newuser\r\nmakeuserdb\r\n\r\n\/etc\/init.d\/courier-authdaemon restart\r\n\/etc\/init.d\/saslauthd restart\r\n\r\necho \"OK. User angelegt\"\r\necho \"Weisen Sie dem neuen User bitte noch E-Mail-Adressen zu!\"\r\necho\r\necho\r\necho \"Datei \/etc\/postfix\/virtual editieren.\"\r\necho \"Danach einmalig ausf\u00fchren: postmap \/etc\/postfix\/virtual\"\r\necho \"Danach einmalig ausf\u00fchren: \/etc\/init.d\/postfix reload\"\r\n<\/pre>\n<p>Skript zum l\u00f6schen von Usern<\/p>\n<pre>echo \"Diesen User loeschen:\"\r\nread DELUSER\r\n\r\n# aus mail_users_dat kriegt lernespam die mailuser\r\ncat \/root\/scripts\/mail\/mail_users.dat | grep -v \"^$DELUSER$\" &gt; \/root\/scripts\/mail\/mail_users.dat.tmp\r\nrm \/root\/scripts\/mail\/mail_users.dat\r\nmv \/root\/scripts\/mail\/mail_users.dat.tmp \/root\/scripts\/mail\/mail_users.dat\r\n\r\ndeluser --remove-home $DELUSER\r\nsaslpasswd2 -d $DELUSER\r\nuserdb $DELUSER del\r\nmakeuserdb\r\n\/etc\/init.d\/courier-authdaemon restart\r\n\/etc\/init.d\/saslauthd restart\r\n<\/pre>\n<p>Skript zum manuellen Spam-lernen<\/p>\n<pre>#!\/bin\/bash\r\n\r\nfor user in $(cat \/root\/scripts\/mail\/mail_users.dat);\r\ndo\r\n\r\nSADIR=\/home\/$user\/.spamassassin\r\nNOSPAM=\/home\/$user\/Maildir\/.LerneKeinSpam\/cur\/\r\n\r\nfor l in $(ls $NOSPAM );\r\ndo\r\nPRINT=`cat $NOSPAM\/$l | grep -e \"^From:\" | grep -o \"[[:alnum:]\\.\\+\\-\\_]*@[[:alnum:]\\.\\-]*\" | sort -u`\r\necho \"whitelist_from $PRINT\" &gt;&gt; $SADIR\/user_prefs\r\ndone\r\n\r\n# Let SA learn\r\n\/usr\/bin\/sa-learn -D  --spam \/home\/$user\/Maildir\/.LerneSpam\/cur\r\n\/usr\/bin\/sa-learn -D  --ham \/home\/$user\/Maildir\/.LerneKeinSpam\/cur\r\n\r\n# Move Stuff\r\nmv \/home\/$user\/Maildir\/.LerneKeinSpam\/cur\/* \/home\/$user\/Maildir\/cur\/\r\nrm \/home\/$user\/Maildir\/.LerneSpam\/cur\/*\r\n\r\ndone\r\nexit\r\n<\/pre>\n<p><span style=\"text-decoration: underline;\">Virtual Aliases<\/span><\/p>\n<p>Unser Postfix weiss noch gar nicht welche E-Mail-Adressen welchen lokalen Mailboxen zugeordnet sind. Diese Zuordnung wird in der Datei \/etc\/postfix\/virtual geschaffen. Links stehen E-Mail-Adressen oder lokale Absender wie &#8222;root&#8220;, rechts steht der Username f\u00fcr die  IMAP-Mailbox oder eine Ziel-E-Mail-Adresse f\u00fcr Weiterleitungen<\/p>\n<pre># \/etc\/postfix\/virtual\r\nroot                                        daniel\r\ndaniel@meinedomain.de            daniel\r\ndaniel@meineanderedomain.de   daniel\r\nfritz@meinedomain.de               fritz\r\nalle@meinedomain.de                daniel,fritz\r\nweiterleitung@meinedomain.de   daniel@gmail.com<\/pre>\n<p>Danach muss Postfix die virtuellen Aliase neu initialisieren. Das ist nach jeder \u00c4nderung der Datei notwendig.<\/p>\n<pre>postmap \/etc\/postfix\/virtual<\/pre>\n<p>Jetzt ist wirklich alles fertig. Es m\u00fcssen noch alle Dienste gestartet werden.<\/p>\n<pre>\/etc\/init.d\/postfix restart\r\n\/etc\/init.d\/courier-imap restart\r\n\/etc\/init.d\/courier-imap-ssl restart\r\n\/etc\/init.d\/courier-authdaemon restart\r\n\/etc\/init.d\/saslauthd restart\r\n\/etc\/init.d\/spamassassin restart\r\n\/etc\/init.d\/clamav restart<\/pre>\n<p>Irgendwas wird sicherlich nicht funktionieren! Zum Debuggen eignet sich \/var\/log\/mail.log ganz gut. In vielen Configdateien kann man das Loglevel hochsetzen um mehr Informationen zu bekommen.<\/p>\n<p><span style=\"text-decoration: underline;\">Transport Maps<\/span><\/p>\n<p>Um Mails an einen anderen SMTP weiterzurouten, ben\u00f6tigt man Transport-Maps. Sie werden in der Datei \/etc\/postfix\/transport angelegt:<\/p>\n<p><pre>\r\n#\/etc\/postfix\/transport\r\n# Links lokales Ziel\r\n# Rechts SMTP an den weitergeleitet wird\r\n\r\ndaniel-ritter.de       smtp:12.13.14.15\r\ndaniel-ritter.de       smtp:anderer.host.de\r\n\r\n# Zus\u00e4tzlich alle Subdomains\r\n.daniel-ritter.de      smtp:anderer.host.de\r\n<\/pre>\n<p><pre>\r\n#\/etc\/postfix\/main.cf\r\ntransport_maps = hash:\/etc\/postfix\/transport\r\n<\/pre>\n<p><pre>\r\n# Aktivieren von \u00c4nderungen an den Transportmaps\r\n\r\npostmap \/etc\/postfix\/transport\r\n\/etc\/init.d\/postfix reload\r\n<\/pre>\n<p>\n<u>Nutzer das Courier-Passwort selbst \u00e4ndern lassen<\/u><\/p>\n<pre>\r\necho \"Courier Passwort \u00e4ndern\"\r\necho\r\n\r\necho\r\necho \"Benutzername: \"\r\nread U\r\necho \"Altes Passwort: \"\r\nread A\r\necho \"Neues Passwort: \"\r\nread N\r\n\r\nif [ $(echo $N | grep -e ^[0-9]) ];\r\nthen\r\necho \"Entschuldigung. Passw\u00f6rter d\u00fcrfen nicht mit einer Zahl beginnen.\"\r\nexit\r\nfi\r\n\r\necho -e \"$U\\0$A\\0$N\\0\" | \/opt\/courierpasswd --verbose --stderr --stdin --changepw\r\n\r\n<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Ich hatte immer mal wieder mit Mailservern zu tun. Leider war ich h\u00e4ufiger etwas verwirrt, da &#8211; je nach Setup &#8211; sehr viele verschiedene Komponenten miteinander kommunizieren m\u00fcssen. Aus diesem Grund hier mein Spickzettel f\u00fcr einen Mailserver auf einem Internethost mit FQDN. Ausprobiert wurde es auf einem Debian Lenny. Alle Verbindungen nach au\u00dfen sind verschl\u00fcsselt [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[227],"tags":[52,50,53,48,49,56,51,57,54,55],"class_list":["post-276","post","type-post","status-publish","format-standard","hentry","category-linux","tag-clamav","tag-courier","tag-cram-md5","tag-mailserver","tag-postfix","tag-sasl","tag-spamassassin","tag-spickzettel","tag-ssl","tag-tls"],"_links":{"self":[{"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/posts\/276","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/comments?post=276"}],"version-history":[{"count":58,"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/posts\/276\/revisions"}],"predecessor-version":[{"id":847,"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/posts\/276\/revisions\/847"}],"wp:attachment":[{"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/media?parent=276"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/categories?post=276"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.daniel-ritter.de\/blog\/wp-json\/wp\/v2\/tags?post=276"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}