Postfix + Dovecot nachträglich auf MySQL umstellen

slashwalker

New Member
Hallo Forum,
ich habe hier meinen eigenen kleinen Mailserver basierend auf CentOS 5.4 mit Postfix und Dovecot. Der Server bedient nur 3 Domains, welche bisher nur 5 Postfächer hatten. Daher habe ich alles mit *.db Dateien geregelt.

Nun wird es aber zunehmend voller auf dem Server und die Pflege über diese *.db Dateien macht keinen Spaß mehr.

Ich möchte also Postfix und Dovecot nachträglich auf MySQL umstellen. Das ganze sollte natürlich ohne Verluste ablaufen ;)

Hier die Ausgabe von postconf -n:
Code:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
broken_sasl_auth_clients = yes
command_directory = /usr/sbin
config_directory = /etc/postfix
daemon_directory = /usr/libexec/postfix
debug_peer_level = 2
html_directory = no
inet_interfaces = all
mail_owner = postfix
mailbox_size_limit = 0
mailq_path = /usr/bin/mailq.postfix
manpage_directory = /usr/share/man
mydestination = localhost
mydomain = example.de
myhostname = example.de
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases.postfix
queue_directory = /var/spool/postfix
readme_directory = no
recipient_delimiter = +
sample_directory = /usr/share/doc/postfix-2.3.3/samples
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
smtpd_banner = $myhostname ESMTP
smtpd_client_restrictions = permit_mynetworks,permit_sasl_authenticated, reject_invalid_hostname, reject_unknown_client
smtpd_recipient_limit = 250
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_address,reject_unknown_sender_domain
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/pki/dovecot/certs/dovecot.pem
smtpd_tls_key_file = /etc/pki/dovecot/private/dovecot.pem
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
unknown_local_recipient_reject_code = 550
virtual_alias_maps = hash:/etc/postfix/virtual_alias
virtual_gid_maps = static:5000
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_domains = /etc/postfix/virtual_domains
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_transport = dovecot
virtual_uid_maps = static:5000

Und hier die dovecot.conf (hab alles entfernt, was auskommentiert war):
Code:
protocols = imaps pop3s


disable_plaintext_auth = yes


log_path =/var/log/dovecot 


ssl_cert_file = /etc/pki/dovecot/certs/dovecot.pem
ssl_key_file = /etc/pki/dovecot/private/dovecot.pem


login_greeting = Dovecot ready.



protocol lda {
  postmaster_address = postmaster@example.de

  hostname =example.de 

  auth_socket_path = /var/run/dovecot/auth-master
}

auth default {
  mechanisms = digest-md5 cram-md5 ntlm

 
  passdb passwd-file {
    # File contains a list of usernames, one per line
    args = /var/mail/vhosts/%d/shadow
    #deny = yes
  }

  
  userdb passwd-file {
    args =/var/mail/vhosts/%d/passwd
  }


  user = root

  
  socket listen {
    master {
      path = /var/run/dovecot/auth-master
      mode = 0600
      user = vmail
      group = vmail
    }
    client {
     
      path = /var/spool/postfix/private/auth
      mode = 0660
	user=postfix
	group=vmail
    }
  }
}
}

Ich habe irgendwo gelesen, das die CentOS Version von Postfix kein MySQL kann. Also muss ich den wohl über das CentOS Plus Repo installieren.

Aber wie geht es dann weiter? Möchte weder Konten, noch Mails verlieren.

Hab bisher lediglich nach einem Tut die DB 'mail' angelegt:
Code:
CREATE TABLE `domains` (
  `domain` varchar(50) NOT NULL,
  PRIMARY KEY (`domain`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `forwardings` (
  `source` varchar(80) NOT NULL,
  `destination` text NOT NULL,
  PRIMARY KEY (`source`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

CREATE TABLE `users` (
  `email` varchar(80) NOT NULL,
  `password` varchar(255) NOT NULL,
  `quota` int(10) DEFAULT '10485760',
  PRIMARY KEY (`email`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;

Also, wie jubel ich Dovecot und Postfix nun die DB unter?
 
Last edited by a moderator:
Okay, Postfix läuft jetzt schon mal über MySQL. Hab mich an das TUT gehalten: http://www.howtoforge.de/howto/virtuelle-benutzer-fur-postfix-auf-centos-51/2/

Bis auf das mit dem Transport, da ich dies nicht benötige. Es sollen ja alle Mails über meinen Server laufen.

Bei Dovecot blick ich noch nicht ganz durch, da die PW in der DB ja verschlüsselt sind. Allerdings ist das kein "normales" MD5 sondern dieses HMAC-MD5, welches von dovecotpw genutzt wird (dovecotpw -p meinpasswort). In der dovecot-mysql.conf soll ich nun angeben, wie die Passwörter verschlüsselt sind. Allerdings gibt es wohl nur die Werte plain, cram-md5 und digest-md5? Welchen denn nun?
 
Okay, ich hab' jetzt mit dieser dovecot-mysql.conf hinbekommen:

Code:
driver = mysql
connect = host=127.0.0.1 dbname=mail user=mail password=mail_pass
default_pass_scheme = CRAM-MD5
password_query = SELECT email AS user, password, '/var/mail/vhosts/$d/$n' AS userdb_home, '5000' AS userdb_uid, '5000' AS userdb_gid FROM users WHERE email = '%u'
user_query = SELECT email AS user, password, '/var/mail/vhosts/$d/$n' AS home, '5000' AS uid, '5000' AS gid FROM users WHERE email = '%u'
 
Back
Top