Hi an alle,
ich habe mir auf einem kleinen Rootserver einen Mailserver mit Postfix und Dovecot aufgesetzt.
Allerdings funktioniert mein Mailserver nicht so wirklich.
Kann mir einer sagen wo mein Fehler liegt?
Hinweis:
Debian 6 Root Server
MX Record: server1.meinedomain.de
Wenn noch was benötigt wird schreibt es, danke für jede Hilfe.
ich habe mir auf einem kleinen Rootserver einen Mailserver mit Postfix und Dovecot aufgesetzt.
Allerdings funktioniert mein Mailserver nicht so wirklich.
Kann mir einer sagen wo mein Fehler liegt?
Hinweis:
Debian 6 Root Server
MX Record: server1.meinedomain.de
Wenn noch was benötigt wird schreibt es, danke für jede Hilfe.
Code:
MySQL Konfiguration für virtuelle Domains und Benutzer
Öffnen der Datenbank:
mysql -u root p
Passwort:
**********
Nachdem der Zugriff hergestellt wurde musste zuerst eine Datenbank erstellt werden in der wir, nach Erstellung gleich weiter arbeiteten.
CREATE DATABASE mail;
USE mail;
Jetzt musste ein Mail-Administrator mit den nötigen Berechtigungen angelegt werden.
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost' IDENTIFIED BY '************';
GRANT SELECT, INSERT, UPDATE, DELETE ON mail.* TO 'mail_admin'@'localhost.localdomain' IDENTIFIED BY '***********';
FLUSH PRIVILEGES;
Erstellung einer Tabelle für die Mailweiterleitung
CREATE TABLE domains (domain varchar(50) NOT NULL, PRIMARY KEY (domain) );
Erstellung einer Benutzer Tabelle:
CREATE TABLE users (email varchar(80) NOT NULL, password varchar(20) NOT NULL, PRIMARY KEY (email) );
Erstellung einer Tabelle für die Verteilung:
CREATE TABLE transport ( domain varchar(128) NOT NULL default '', transport varchar(128) NOT NULL default '', UNIQUE KEY domain (domain) );
Zum verlassen:
quit
Konfiguration der Zusammenarbeit zwischen Postfix und MySQL
Erstellung folgender Dateien mit Inhalt:
Datei:/etc/postfix/mysql-virtual_domains.cf
user = mail_admin
password = ************
dbname = mail
query = SELECT domain AS virtual FROM domains WHERE domain='%s'
hosts = 127.0.0.1
Datei:/etc/postfix/mysql-virtual_forwardings.cf
user = mail_admin
password = **************
dbname = mail
query = SELECT destination FROM forwardings WHERE source='%s'
hosts = 127.0.0.1
Datei:/etc/postfix/mysql-virtual_mailboxes.cf
user = mail_admin
password = *****************
dbname = mail
query = SELECT CONCAT(SUBSTRING_INDEX(email,'@',-1),'/',SUBSTRING_INDEX(email,'@',1),'/') FROM users WHERE email='%s'
hosts = 127.0.0.1
Datei:/etc/postfix/mysql-virtual_email2email.cf
user = mail_admin
password = ****************
dbname = mail
query = SELECT email FROM users WHERE email='%s'
hosts = 127.0.0.1
Setzen der Berechtigungen für die Dateien
chmod o= /etc/postfix/mysql-virtual_*.cf
chgrp postfix /etc/postfix/mysql-virtual_*.cf
Erstellung der virtuellen Mailboxen und Gruppe für die Verwaltung der E-Mails.
groupadd -g 5000 vmail
useradd -g vmail -u 5000 vmail -d /home/vmail m
Konfiguration der Postfix Datei main.cf
postconf -e 'myhostname = server1.meinedomain.de'
postconf -e 'mydestination = server1.meinedomain.de, localhost, localhost.localdomain'
postconf -e 'mynetworks = 127.0.0.0/8'
postconf -e 'message_size_limit = 30720000'
postconf -e 'virtual_alias_domains ='
postconf -e 'virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, mysql:/etc/postfix/mysql-virtual_email2email.cf'
postconf -e 'virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf'
postconf -e 'virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf'
postconf -e 'virtual_mailbox_base = /home/vmail'
postconf -e 'virtual_uid_maps = static:5000'
postconf -e 'virtual_gid_maps = static:5000'
postconf -e 'smtpd_sasl_auth_enable = yes'
postconf -e 'broken_sasl_auth_clients = yes'
postconf -e 'smtpd_sasl_authenticated_header = yes'
postconf -e 'smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination'
postconf -e 'smtpd_use_tls = yes'
postconf -e 'smtpd_tls_cert_file = /etc/postfix/smtpd.cert'
postconf -e 'smtpd_tls_key_file = /etc/postfix/smtpd.key'
postconf -e 'virtual_create_maildirsize = yes'
postconf -e 'virtual_maildir_extended = yes'
postconf -e 'proxy_read_maps = $local_recipient_maps $mydestination $virtual_alias_maps $virtual_alias_domains $virtual_mailbox_maps $virtual_mailbox_domains $relay_recipient_maps $relay_domains $canonical_maps $sender_canonical_maps $recipient_canonical_maps $relocated_maps $transport_maps $mynetworks $virtual_mailbox_limit_maps'
postconf -e virtual_transport=dovecot
postconf -e dovecot_destination_recipient_limit=1
Erstellung des SSL Zertifikat für Postfix
cd /etc/postfix
openssl req -new -outform PEM -out smtpd.cert -newkey rsa:2048 -nodes -keyout smtpd.key -keyform PEM -days 365 -x509
Konfiguration des Zertifikates
Country Name (2 letter code) [AU]:DE
State or Province Name (full name) [Some-State]:Bundesland
Locality Name (eg, city) []:Stadt
Organization Name (eg, company) [Internet Widgits Pty Ltd]:Name der Firma
Organizational Unit Name (eg, section) []:Besitzer
Common Name (eg, YOUR name) []:server1.meinedomain.de
Email Address []:support@meinedomain.de
Setzen der benötigten Berechtigungen
chmod o= /etc/postfix/smtpd.key
Konfiguration der saslauthd Datei für die Verwendung der MySQL Datenbank
mkdir -p /var/spool/postfix/var/run/saslauthd
cp -a /etc/default/saslauthd /etc/default/saslauthd.bak
Editieren der Datei /etc/default/saslauthd
START=yes
DESC="SASL Authentication Daemon"
NAME="saslauthd"
MECHANISMS="pam"
MECH_OPTIONS=""
THREADS=5
OPTIONS="-c -m /var/spool/postfix/var/run/saslauthd -r"
Konfiguration der Datei /etc/pam.d/smtp und um folgende Zeilen erweitern
auth required pam_mysql.so user=mail_admin passwd=******************** host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
account sufficient pam_mysql.so user=mail_admin passwd=********** host=127.0.0.1 db=mail table=users usercolumn=email passwdcolumn=password crypt=1
Erstellung der Datei /etc/postfix/sasl/smtpd.conf
pwcheck_method: saslauthd
mech_list: plain login
allow_plaintext: true
auxprop_plugin: mysql
sql_hostnames: 127.0.0.1
sql_user: mail_admin
sql_passwd: ******************
sql_database: mail
sql_select: select password from users where email = '%u'
Setzen der Berechtigungen für die Datei smtpd.conf
chmod o= /etc/pam.d/smtp
chmod o= /etc/postfix/sasl/smtpd.conf
Erstellung eines Postfix-Benutzers in der sasl Gruppe und Neustart der beiden Dienste
adduser postfix sasl
service postfix restart
service saslauthd restart
Editierung der /etc/postfix/master.cf damit Postfix mit Dovecot zusammenarbeiten kann.
Am Ende der Datei einfügen (wichtig sind die gesetzten Leerzeichen)
dovecot unix - n n - - pipe
flags=DRhu user=vmail:vmail argv=/usr/lib/dovecot/deliver -d ${recipient}
Erstellen einer Backup-Datei
cp -a /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.bak
Konfiguration der Dovecot-Datei: /etc/dovecot/dovecot.conf
protocols = imap imaps pop3 pop3s
log_timestamp = "%Y-%m-%d %H:%M:%S "
mail_location = maildir:/home/vmail/%d/%n/Maildir
ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem
namespace private {
separator = .
prefix = INBOX.
inbox = yes
}
protocol lda {
log_path = /home/vmail/dovecot-deliver.log
auth_socket_path = /var/run/dovecot/auth-master
postmaster_address = postmaster@schmitz-v.de
mail_plugins = sieve
global_script_path = /home/vmail/globalsieverc
}
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
}
auth default {
user = root
passdb sql {
args = /etc/dovecot/dovecot-sql.conf
}
userdb static {
args = uid=5000 gid=5000 home=/home/vmail/%d/%n allow_all_users=yes
}
socket listen {
master {
path = /var/run/dovecot/auth-master
mode = 0600
user = vmail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
Erstellung einer Backup-Datei
cp -a /etc/dovecot/dovecot-sql.conf /etc/dovecot/dovecot-sql.conf.bak
Änderung der Datei /etc/dovecot/dovecot-sql.conf
driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail_admin password=****************
default_pass_scheme = CRYPT
password_query = SELECT email as user, password FROM users WHERE email='%u';
Neustart des Dienstes Dovecot
service dovecot restart
Konfigurieren der Mail Aliases
postmaster: root
root: postmaster@meinedomain.de
Erstellung der Domain und der Benutzer
mysql -u root -p
USE mail;
INSERT INTO domains (domain) VALUES ('meinedomain');
INSERT INTO users (email, password) VALUES ('benutzer1@meinedomain.de', ENCRYPT('********'));
INSERT INTO users (email, password) VALUES ('benutzer2@meinedomain.de', ENCRYPT('**********'));
INSERT INTO users (email, password) VALUES ('benutzer3@meinedomain.de', ENCRYPT('***********'));
INSERT INTO users (email, password) VALUES ('benutzer4@meinedomain.de', ENCRYPT('***********'));
INSERT INTO users (email, password) VALUES ('benutzer5@meinedomain.de', ENCRYPT('***********'));
quit