V-Server einrichten: Unterschied zwischen den Versionen

Aus LT42-Wiki
Zur Navigation springenZur Suche springen
KKeine Bearbeitungszusammenfassung
KKeine Bearbeitungszusammenfassung
Zeile 219: Zeile 219:
  ## Dovecot configuration file
  ## Dovecot configuration file
  #
  #
auth_mechanisms = plain login
  base_dir = /var/run/dovecot/
  base_dir = /var/run/dovecot/
  #
  first_valid_uid = 150
# imap imaps pop3 pop3s (use imaps and pop3s if configured for SSL)
  last_valid_uid = 150
protocols = imap pop3
#
# Uncomment the ssl_listen statements and comment out listen if using SSL
protocol imap {
listen = *:143
  # ssl_listen = *:993
}
protocol pop3 {
listen = *:110
# ssl_listen = *:995
}
#
  log_timestamp = “%Y-%m-%d %H:%M:%S ”
  log_timestamp = “%Y-%m-%d %H:%M:%S ”
syslog_facility = mail
#
# Uncomment these if using SSL
#ssl_cert_file = /etc/ssl/mycompany/mailserver/mail-cert.pem
#ssl_key_file = /etc/ssl/mycompany/mailserver/mail-key.pem
#ssl_ca_file = /etc/ssl/mycompany/ca/mycompany.pem
#ssl_verify_client_cert = yes
#ssl_parameters_regenerate = 168
#verbose_ssl = no
#
# Where the mailboxes are located
  mail_location = maildir:/var/vmail/%d/%u
  mail_location = maildir:/var/vmail/%d/%u
  #
  protocols = imap pop3
mail_extra_groups = mail
  # protocols = imap pop3 imaps pop3s
  mail_debug = no
  # ssl_ca = </etc/ssl/menno/cacert.pem
  first_valid_uid = 150
  # ssl_cert = </etc/ssl/mailserver/mail-cert.pem
  last_valid_uid = 150
  # ssl_key = </etc/ssl/mailserver/mail-key.pem
  maildir_copy_with_hardlinks = yes
#
  protocol imap {
  protocol imap {
login_executable = /usr/lib/dovecot/imap-login
  imap_max_line_length = 64 k
mail_executable = /usr/lib/dovecot/imap
imap_max_line_length = 65536
  }
  }
  protocol pop3 {
  protocol pop3 {
login_executable = /usr/lib/dovecot/pop3-login
  pop3_uidl_format = %08Xu%08Xv
mail_executable = /usr/lib/dovecot/pop3
pop3_uidl_format = %08Xu%08Xv
  }
  }
  protocol lda {
  protocol lda {
postmaster_address = postmaster@mydomain.com
  auth_socket_path = /var/run/dovecot/auth-master
sendmail_path = /usr/lib/sendmail
  postmaster_address = postmaster@mydomain.com
auth_socket_path = /var/run/dovecot/auth-master
  sendmail_path = /usr/lib/sendmail
  }
  }
  #
  passdb {
auth_verbose = no
  driver = sql
auth_debug = no
auth_debug_passwords = no
#
auth default {
  mechanisms = plain
passdb sql {
  args = /etc/dovecot/dovecot-sql.conf
  args = /etc/dovecot/dovecot-sql.conf
  }
  }
  userdb sql {
  userdb {
driver = sql
  args = /etc/dovecot/dovecot-sql.conf
  args = /etc/dovecot/dovecot-sql.conf
  }
  }
user = nobody
 
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0660
user = vmail
group = mail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
#
# If you want client certificates, use these lines
# ssl_require_client_cert = yes
# ssl_username_from_cert = yes
}


Für SASL müssen wir noch einen Block in /etc/dovecot/conf.d/10-master.conf
Für SASL müssen wir noch einen Block in /etc/dovecot/conf.d/10-master.conf

Version vom 8. Mai 2013, 16:17 Uhr

Ein Freund von mir hat das aktuelle Angebot an V-Servern bei Strato genutzt und sich einen Linux Virtual Server 1 bestellt. Nun versuche ich hier zu dokumentieren, welche Schritte zur Einrichtung notwendig waren.

Der Server soll einige Dinge erledigen:

Webserver

Zur Bereitstellung von Webseiten benutzen wir den Apache-Webserver. Da der Server unter mehreren Adressen erreichbar sein wird, richten wir VirtualHosts ein.

Nach der Installation mit dem Befehl

apt-get install apache2 php5 php5-mysql

zeigt der Server die Dateien in /var/www/ an.

Hier erstellen wir nun den Ordner vhosts, wo wir Unterordner mit den einzelnen Domains erstellen werden. Die Konfiguration für Apache finden wir in

/etc/apache2/sites-available

hier sollte nur eine Datei zu finden sein. Hier müssen wir nur die Standard-Dokumentpfade anpassen. Am Besten legen wir den Standard-Inhalt in

/var/www/vhosts/default

Nun können wir eine Standard-Konfiguration für neue Domains erstellen:

<VirtualHost *:80>
ServerAdmin webmaster@<domain>
ServerName <domain>
DocumentRoot /var/www/vhosts/<domain>/htdocs
<Directory /var/www/vhosts/<domain>/htdocs/>
Options MultiViews
AllowOverride None
Order allow,deny
allow from all
</Directory>
ErrorLog /var/log/apache2/<domain>.error.log
LogLevel warn
CustomLog /var/log/apache2/<domain>.access.log combined
</VirtualHost>

Diese Konfiguration können wir nun einfach in das Verzeichnis /etc/apache2/sites-available/ kopieren und die Platzhalter anpassen. Danach müssen wir die Domains noch mit einer Verlinkung aktivieren:

root@server:/# cd /etc/apache2/sites-enabled
root@server:/etc/apache2/sites-enabled# ln -s ../sites-available/<domain> <domain>

Nach dem Erstellen der Verzeichnisse sollte mit einem Apache-Neustart

root@server:/# apache2ctl graceful

alles laufen.

Datenbank-Server

Als Datenbank-Server benutzen wir MySQL. Diesen Server installieren wir ganz einfach per apt:

root@server:/# apt-get install mysql-server mysql-client

Dann setzen wir dem root-Benutzer in MySQL ein neues Passwort:

root@server:/# mysqladmin -u root password "newpwd"

Mailserver

Die folgende Anleitung ist teilweise eine Übersetzung von http://johnny.chadda.se/article/mail-server-howto-postfix-and-dovecot-with-mysql-and-tlsssl-postgrey-and-dspam/

Für den Ein- und Ausgang von Mails auf dem Server muss ein Mailserver eingerichtet werden. Wir entscheiden uns hier für Postfix als MTA und Dovecot als MDA. Die Einrichtung von Postfix ist komplexer, da wir hier mit virtuellen Benutzern arbeiten werden, um so wenig Systembenutzer auf dem System zu haben, wie möglich. Außerdem unterstützt der Server dann auch die Handhabung mehrerer Domains. Zu aller Erst installieren wir Postfix mit apt:

root@server:/# apt-get install postfix postfix-mysql

Falls bei der Installation ein Konfigurations-Dialog auftritt, wählen wir hier einfach erstmal "Keine Konfiguration" aus.

Dann Erstellen wir im MySQL-Server eine neue Datenbank "mail" und einen neuen Benutzer "mail" mit allen Rechten:

root@server:/# mysql -u root -p
mysql> CREATE DATABASE mail;
mysql> GRANT ALL PRIVILEGES ON mail.* TO 'mail'@'localhost' IDENTIFIED BY 'mail';
mysql> quit

Postfix Admin

Dann laden wir den Postfix Admin von der Webseite herunter und entpacken ihn in ein eingerichtetes Verzeichnis z.B. einer Subdomain (z.B. mail.<domain>)

root@server:/# mkdir /var/www/vhosts/mail.example.org/htdocs
root@server:/# cd /var/www/vhosts/mail.example.org/htdocs
root@server:/# tar xvfz postfixadmin-X.X.X.tgz

Nun passen wir noch den Postfix Admin an unsere Zwecke an. Dazu wechseln wir in das vorhin angelegte Verzeichnis postfixadmin-X.X.X/ (das wir noch ändern sollten ;-) ) und kopieren die Standardkonfiguration:

root@server:/# cd ...../postfixadmin-X.X.X/
root@server:/# cd ..
root@server:/# mv postfixadmin-X.X.X/ postfixadmin/
root@server:/# vi config.inc.php

Hier passen wir folgende Parameter an:

$CONF['postfix_admin_url'] = ‘'var/www/vhosts/mail.example.org/postfixadmin/';
$CONF['database_type'] = 'mysqli';
$CONF['database_user'] = 'mail';
$CONF['database_password'] = 'mail';
$CONF['database_name'] = 'mail';

(Natürlich an die eigenen Zwecke angepasst)

Postfix

Die Konfiguration liegt in /etc/postfix wir wechseln also in das Verzeichnis und bearbeiten die (vielleicht neue) Datei main.cf

root@server:/# cd /etc/postfix
root@server:/# vi main.cf

Dann richten wir die Datei wie folgt ein (denken Sie dran myhostname und myorigin an Ihre eigenen Bedürfnisse anzupassen). Mit Dovecot 2.0 hat sich einiges an der SASL-Authentifizierung geändert... das ist hier schon eingearbeitet:

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no
append_dot_mydomain = no
myhostname = mail.mycompany.com
myorigin = mycompany.com
mydestination = localhost
relayhost =
mynetworks = 127.0.0.0/8
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
# Virtual mailbox settings
virtual_mailbox_domains = proxy:mysql:$config_directory/mysql_virtual_domains_maps.cf
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf
virtual_alias_maps = proxy:mysql:$config_directory/mysql_virtual_alias_maps.cf
virtual_minimum_uid = 150
virtual_uid_maps = static:150
virtual_gid_maps = static:8
virtual_transport = dovecot
# SASL Authentication
smtpd_sasl_auth_enable = yes
smtpd_sasl_exceptions_networks = $mynetworks
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_tls_auth_only = yes
smtpd_recipient_restrictions = permit_mynetworks
       ,permit_sasl_authenticated
       ,reject_unauth_destination
       ,reject_unlisted_recipient
       ,reject_non_fqdn_hostname
       ,reject_non_fqdn_sender
       ,reject_non_fqdn_recipient
       ,reject_invalid_hostname
       ,reject_unauth_pipelining

Diese Konfiguration legt die Mails in /var/vmail ab und benutzt den Benutzer vmail mit der UID 150 (legen wir gleich an):

root@server:/# useradd -r -u 150 -g mail -d /var/vmail -s /sbin/nologin -c “Virtual mailbox” vmail
root@server:/# mkdir /var/vmail
root@server:/# chmod 770 /var/vmail/
root@server:/# chown vmail:mail /var/vmail/

Jetzt fangen wir an, die Maps zu konfigurieren. Hiermit bringen wir Postfix bei, wir er die Datenbank nach Mail-Adressen abfragen muss. Dafür müssen wir einige Dateien anlegen:

root@server:/# touch /etc/postfix/mysql_virtual_alias_maps.cf
root@server:/# touch /etc/postfix/mysql_virtual_domains_maps.cf
root@server:/# touch /etc/postfix/mysql_virtual_mailbox_limit_maps.cf
root@server:/# touch /etc/postfix/mysql_virtual_mailbox_maps.cf

/etc/postfix/mysql_virtual_alias_maps.cf

user = mail
password = mail
hosts = localhost
dbname = mail
table = alias
select_field = goto
where_field = address
additional_conditions = and active = '1'
#query = SELECT goto FROM alias WHERE address='%s' AND active = '1'

/etc/postfix/mysql_virtual_domains_maps.cf

user = mail
password = mail
hosts = localhost
dbname = mail
table = domain
select_field = domain
where_field = domain
additional_conditions = and backupmx = '0' and active = '1'
#query = SELECT domain FROM domain WHERE domain='%s' AND backupmx = '0' AND active = '1'

/etc/postfix/mysql_virtual_mailbox_limit_maps.cf

user = mail
password = mail
hosts = localhost
dbname = mail
table = mailbox
select_field = quota
where_field = username
additional_conditions = and active = '1'
#query = SELECT quota FROM mailbox WHERE username='%s' AND active = '1'

/etc/postfix/mysql_virtual_mailbox_maps.cf

user = mail
password = mail
hosts = localhost
dbname = mail
table = mailbox
select_field = CONCAT(domain,'/',maildir)
where_field = username
additional_conditions = and active = '1'
#query = SELECT CONCAT(domain,'/',maildir) FROM mailbox WHERE username='%s' AND active = '1'

Wichtig ist es, hier den Benutzernamen und das Passwort an die MySQL-Einstellungen anzupassen.

Als letzte Postfix-Konfiguration müssen wir in der master.cf ganz unten die Pipe für Dovecot einrichten:

dovecot unix – n n – – pipe flags=DRhu user=vmail:mail argv=/usr/lib/dovecot/deliver -d $(recipient)
submission inet n - - - - smtpd
 -o smtpd_tls_security_level=encrypt
 -o smtpd_sasl_auth_enable=yes
 -o smtpd_sasl_type=dovecot
 -o smtpd_sasl_path=private/auth
 -o smtpd_sasl_security_options=noanonymous
 -o smtpd_sasl_local_domain=$myhostname
 -o smtpd_client_restrictions=permit_sasl_authenticated,reject
 -o smtpd_sender_login_maps=hash:/etc/postfix/virtual
 -o smtpd_sender_restrictions=reject_sender_login_mismatch
 -o smtpd_recipient_restrictions=reject_non_fqdn_recipient,reject_unknown_recipient_domain,permit_sasl_authenticated,reject

Dovecot

Nun beginnen wir, den zweiten Teil des Mailservers anzupassen. Hierfür installieren wir Dovecot über apt:

root@server:/# apt-get install dovecot-imapd dovecot-pop3d

Wir können hier auch das Paket "dovecot-pop3d" weglassen, wenn wir keine POP3-Anmeldung am Server brauchen.

Nun beginnen wir mit der Konfiguration von Dovecot unter /etc/dovecot/dovecot.conf. Diese Konfiguration kann einfach so kopiert werden. Es bringt auch eine SSL-Unterstützung mit, die aber von Haus aus deaktiviert ist:

## Dovecot configuration file
#
auth_mechanisms = plain login
base_dir = /var/run/dovecot/
first_valid_uid = 150
last_valid_uid = 150
log_timestamp = “%Y-%m-%d %H:%M:%S ”
mail_location = maildir:/var/vmail/%d/%u
protocols = imap pop3
# protocols = imap pop3 imaps pop3s
# ssl_ca = </etc/ssl/menno/cacert.pem
# ssl_cert = </etc/ssl/mailserver/mail-cert.pem
# ssl_key = </etc/ssl/mailserver/mail-key.pem
protocol imap {
  imap_max_line_length = 64 k
}
protocol pop3 {
  pop3_uidl_format = %08Xu%08Xv
}
protocol lda {
  auth_socket_path = /var/run/dovecot/auth-master
  postmaster_address = postmaster@mydomain.com
  sendmail_path = /usr/lib/sendmail
}
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf
}


Für SASL müssen wir noch einen Block in /etc/dovecot/conf.d/10-master.conf Unter

service auth {

müssen wir die folgende Zeile einblenden:

 # Postfix smtp-auth
 unix_listener /var/spool/postfix/private/auth {
   mode = 0666
 }

Nun müssen wir Dovecot nur noch sagen, wie sich Dovecot die Anmelde-Daten beschaffen kann. Dafür bearbeiten wir die Datei /etc/dovecot/dovecot-sql.conf:

driver = mysql
connect = host=localhost dbname=mail user=mail password=mail
# The new name for MD5 is MD5-CRYPT so you might need to change this depending on version
default_pass_scheme = MD5
# Get the mailbox
user_query = SELECT '/var/vmail/%d/%n' as home, 'maildir:/var/vmail/%d/%n' as mail, 150 AS uid, 8 AS gid, concat('dirsize:storage=', quota) AS quota FROM mailbox WHERE username = '%u' AND active = '1'
# Get the password
password_query  = SELECT username as user, password, '/var/vmail/%d/%n' as userdb_home, 'maildir:/var/vmail/%d/%n' as userdb_mail, 150 as userdb_uid, 8 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
# If using client certificates for authentication, comment the above and uncomment the following
#password_query = SELECT null AS password, '%u' AS user

Hier müssen wir möglicherweise die Felder user= und password= an unsere Zwecke anpassen.

Dann setzen wir noch die Rechte für Dovecot:

root@server:/# chmod 600 /etc/dovecot/*.conf
root@server:/# chown vmail /etc/dovecot/*.conf

Dovecot ist jetzt konfiguriert. Momentan noch ohne SSL, aber das kommt später.

Nun ist der Mailserver eingerichtet. Wir starten nun die Services neu:

root@server:/# /etc/init.d/postfix restart
root@server:/# /etc/init.d/dovecot restart
root@server:/# /etc/init.d/apache2 restart
root@server:/# /etc/init.d/mysql-server restart

Nun können wir unter http://mail.example.org/postfixadmin/admin/ einen neuen Benutzer und eine neue Domain anlegen und einige Tests durchführen. Damit ist der Mailserver eingerichtet.

SSL

Für die sichere Mail-Übertragung ermöglichen wir eine Verbindung per SSL. Dafür erstellen wir auf dem Server erstmal selbst signierte SSL-Zertifikate.

mkdir -p /etc/ssl/mailserver/
cd /etc/ssl/mailserver/
openssl genrsa 1024 > mail-key.pem
chmod 400 mail-key.pem
openssl req -new -x509 -nodes -sha1 -days 365 -key mail-key.pem > mail-cert.pem

Der common name MUSS hier mit dem Server-Namen übereinstimmen (mail.example.org)

Nun blenden wir in der dovecot.conf die SSL-Kommentare ein:

protocols
ssl_listen
ssl_cert_file
ssl_key_file
ssl_parameters_regenerate = 168
verbose_ssl = no

und passen die Pfade an.