Hetzner - DokuWiki

DebianMailserver5

Dieses How-to basiert auf diversen anderen How-To's mit denen ich damals meinen Mail server gebastelt habe. Leider habe ich zwischenzeitlich die Quellen dafür nicht mehr.


Funktionen:

  • Virtual Domains
  • Spam und Virenfilter mittels Spamassassin und Amavisd-new sowie Postgrey
  • Verwaltung der Mailadressen mittels Postfixadmin
  • Auto Reply/Vacation Funktion
  • Shared Folders mit Courier
  • ....


Als erstes benötigen wir ein paar Debian Pakete

 apt-get install postfix postfix-mysql mysql-server-5.0 apache2 libapache2-mod-php5
 courier-authdeamon courier-authlib-mysql courier-imap courier-pop
 spamassassin amavisd-new clamav

Postfixadmin

Nun holen wir uns den aktuellen postfixadmin aus dem SVN:

 svn co https://postfixadmin.svn.sourceforge.net/svnroot/postfixadmin/trunk postfixadmin

Diese legen wir in /var/www/postfixadmin ab.

Berechtigungen ändern:

 cd /var/www/postfixadmin
 chmod 640 *.php *.css
 cd /var/www/postfixadmin/admin/
 chmod 640 *.php .ht*
 cd /var/www/postfixadmin/images/
 chmod 640 *.gif *.png
 cd /var/www/postfixadmin/languages/
 chmod 640 *.lang
 cd /var/www/postfixadmin/templates/
 chmod 640 *.tpl
 cd /var/www/postfixadmin/users/
 chmod 640 *.php
 chown -R www-data:www-data /var/www/postfixadmin

Grundsätzlich kann man nun auch nach der Install Anleitung von postfixadmin weitermachen. Der Vollständigkeithalber erkläre ich es hier dennoch.

In der DATABASE_MYSQL.TXT liegt das Template für die Datenbank. Nun müssen wir hier aber ein paar Zeilen auskommentieren:

 # Postfix user & password
 INSERT INTO user (Host, User, Password) VALUES ('localhost','postfix',password('postfix'));
 # Postfix Admin user & password
 INSERT INTO user (Host, User, Password) VALUES ('localhost','postfixadmin',password('postfixadmin'));
 #Priviledges
 INSERT INTO db (Host, Db, User, Select_priv) VALUES ('localhost','postfix','postfix','Y');
 INSERT INTO db (Host, Db, User, Select_priv, Insert_priv, Update_priv, Delete_priv) VALUES 
 ('localhost', 'postfix', 'postfixadmin', 'Y', 'Y', 'Y', 'Y');

Damit werden im MySQL dann ein user postfix und ein user postfixadmin angelegt.

Nun importieren wir das ganze in MySQL

 mysql -u root < DATABASE_MYSQL.TXT


Bitte beachten das diese Vorgehensweise für die gegenwärtige SVN Version gilt (Stand 15.10.2007) evtl. ist bei neueren Versionen hier kein auskommentieren mehr nötig.

Nun ist alles importiert und wir können wenn unser Apache noch immer /var/www korrekt liest uns unter http://deineip/postfixadmin/setup.php den Status der Postfixadmin installation ansehen und unseren Superuser anlegen. Wenn das getan ist löschen wir die setup.php

 rm /var/www/postfixadmin/setup.php

Leider muss nun noch per hand in der Datei config.inc.php folgende Zeile auf "true" geändert werden:

 $CONF['configured'] = true;

Jetzt können wir unter http://deineip/postfixadmin uns mit unserem superuser einloggen und alles schön administrieren. Grundsätzlich denke ich ist hier alles selbsterklärend. Jeder von euch angelegte User mit Mailbox kann sich auch unter dieser Adresse einloggen und zb seinen Alias oder Passwort ändern oder später auch seine Out of Office replys verwalten.


Postfix

Nun müssen wir Postfix einrichten und ihm auch sagen das er bitteschön mit postfixadmin gemeinsame Sache machen soll.

Dazu müssen wir erst einmal ein paar Dateien mit folgenden Inhalten anlegen:

mysql_virtual_alias_maps.cf

 user = postfix
 password = postfix
 hosts = 127.0.0.1
 dbname = postfix
 table = alias
 select_field = goto
 where_field = address

mysql_virtual_domains_maps.cf

 user = postfix
 password = postfix
 hosts = 127.0.0.1
 dbname = postfix
 table = domain
 select_field = domain
 where_field = domain

mysql_virtual_mailbox_limit_maps.cf

 user = postfix
 password = postfix
 hosts = 127.0.0.1
 dbname = postfix
 table = mailbox
 select_field = quota
 where_field = username


mysql_virtual_mailbox_maps.cf

 user = postfix
 password = postfix
 hosts = 127.0.0.1
 dbname = postfix
 table = mailbox
 select_field = maildir
 where_field = username


Jetzt müssen wir noch die main.cf

 # 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 = 1h
 # 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:${queue_directory}/smtpd_scache
 smtp_tls_session_cache_database = btree:${queue_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 = mail.genetic-id.de
 alias_maps = hash:/etc/aliases
 alias_database = hash:/etc/aliases
 myorigin = /etc/mailname
 mydestination = localhost, localhost.localdomain, localhost
 relayhost =
 mynetworks = 127.0.0.0/8
 mailbox_command = procmail -a "$EXTENSION"
 mailbox_size_limit = 0
 recipient_delimiter = +
 inet_interfaces = all
 mailbox_size_limit = 449260000
 message_size_limit = 409260000


 virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
 virtual_gid_maps = static:1001
 virtual_mailbox_base = /email
 virtual_mailbox_domains =  mysql:/etc/postfix/mysql_virtual_domains_maps.cf
 virtual_mailbox_limit = 512000000
 virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
 virtual_minimum_uid = 1001
 virtual_transport = virtual
 virtual_uid_maps = static:1001
 # Additional for quota support
 #virtual_create_maildirsize = yes
 #virtual_mailbox_extended = yes
 #virtual_mailbox_limit_maps = 
 #virtual_mailbox_limit_override = yes
 #virtual_maildir_limit_message = Sorry, the user's maildir has overdrawn his diskspace quota, please try again later.
 #virtual_overquota_bounce = yes
 transport_maps = hash:/etc/postfix/transport
 broken_sasl_auth_clients = yes
 smtpd_recipient_restrictions =
   permit_mynetworks,
 #  permit_sasl_authenticated,
   check_client_access hash:/var/lib/pop-before-smtp/hosts,
   reject_non_fqdn_hostname,
   reject_non_fqdn_sender,
   reject_non_fqdn_recipient,
   reject_unauth_destination,
   reject_unauth_pipelining,
   reject_invalid_hostname,
   reject_rbl_client list.dsbl.org,
   reject_rbl_client bl.spamcop.net,
   reject_rbl_client zen.spamhaus.org,
   reject_rbl_client sbl-xbl.spamhaus.org,
   reject_rbl_client whois.rfc-ignorant.org,
   reject_rbl_client ix.dnsbl.manitu.org,
   check_policy_service inet:127.0.0.1:60000
 #smtpd_sasl_auth_enable = yes
 #smtpd_sasl_local_domain = $myhostname
 #smtpd_sasl_security_options = noanonymous
 content_filter = amavis:[127.0.0.1]:10024
 receive_override_options = no_address_mappings
 #transport_maps = hash:/etc/postfix/transport


© 2019. Hetzner Online GmbH. Alle Rechte vorbehalten.