数据库
首页 > 数据库> > Postfix和Dovecot配置Mysql虚拟用户

Postfix和Dovecot配置Mysql虚拟用户

作者:互联网

安装:

1 yum install dovecot-mysql

新建数据库:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 CREATE DATABASE mailserver; GRANT SELECT ON mailserver.* TO 'mailuser'@'127.0.0.1' IDENTIFIED BY 'mailuserpass'; FLUSH PRIVILEGES; USE mailserver;   #虚拟域表 CREATE TABLE `virtual_domains` (   `id` int(11) NOT NULL auto_increment,   `name` varchar(50) NOT NULL,   PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;   #虚拟用户表 CREATE TABLE `virtual_users` (   `id` int(11) NOT NULL auto_increment,   `domain_id` int(11) NOT NULL,   `password` varchar(106) NOT NULL,   `email` varchar(100) NOT NULL,   PRIMARY KEY (`id`),   UNIQUE KEY `email` (`email`),   FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;   #虚拟用户别名 CREATE TABLE `virtual_aliases` (   `id` int(11) NOT NULL auto_increment,   `domain_id` int(11) NOT NULL,   `source` varchar(100) NOT NULL,   `destination` varchar(100) NOT NULL,   PRIMARY KEY (`id`),   FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE ) ENGINE=InnoDB DEFAULT CHARSET=utf8;   添加测试数据: INSERT INTO `mailserver`.`virtual_domains`   (`name`) VALUES   ('haiyun.me'); INSERT INTO `mailserver`.`virtual_users`   (`domain_id`, `password` , `email`) VALUES   ('1', ENCRYPT('password', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'user@haiyun.me'); INSERT INTO `mailserver`.`virtual_aliases`   (`domain_id`, `source`, `destination`) VALUES   ('1', 'alias@haiyun.me', 'user@haiyun.me');

Postfix添加以下配置:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-alias-maps.cf #使用dovecot lmtp交付虚拟域邮件,省却postfix配置用户邮件目录及权限问题 virtual_transport = lmtp:unix:private/dovecot-lmtp #使用dovecot验证,后面dovecot配置 smtpd_sasl_type = dovecot smtpd_sasl_path = private/auth smtpd_sasl_auth_enable = yes   smtpd_recipient_restrictions =         permit_sasl_authenticated,         permit_mynetworks,         reject_unauth_destination

配置Postfix支持Mysql查询表:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 #虚拟域 /etc/postfix/mysql-virtual-mailbox-domains.cf user = mailuser password = mailuserpass hosts = 127.0.0.1 dbname = mailserver query = SELECT 1 FROM virtual_domains WHERE name='%s' #虚拟用户 /etc/postfix/mysql-virtual-mailbox-maps.cf user = mailuser password = mailuserpass hosts = 127.0.0.1 dbname = mailserver query = SELECT 1 FROM virtual_users WHERE email='%s' #虚拟别名 /etc/postfix/mysql-virtual-alias-maps.cf user = mailuser password = mailuserpass hosts = 127.0.0.1 dbname = mailserver query = SELECT destination FROM virtual_aliases WHERE source='%s'

测试查询:

1 2 3 postmap -q haiyun.me mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf postmap -q user@haiyun.me mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf postmap -q alias@haiyun.me mysql:/etc/postfix/mysql-virtual-alias-maps.cf

Dovecot配置:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:/var/mail/vhosts/%d/%n   /etc/dovecot/conf.d/10-auth.conf auth_verbose = yes  # 认证详细日志  auth_debug = yes    # 认证debug disable_plaintext_auth = no #开启明文验证 auth_mechanisms = plain login #支持验证方法 #!include auth-system.conf.ext #取消默认系统验证 !include auth-sql.conf.ext #使用mysql验证   /etc/dovecot/conf.d/auth-sql.conf.ext #用户验证 passdb {   driver = sql   args = /etc/dovecot/dovecot-sql.conf.ext } #用户邮箱目录 %d为domain,%n为user userdb {   driver = static   args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n }   /etc/dovecot/dovecot-sql.conf.ext driver = mysql connect = host=127.0.0.1 dbname=mailserver user=mailuser password=mailuserpass default_pass_scheme = SHA512-CRYPT password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';   /etc/dovecot/conf.d/10-master.conf #lmtp服务,postfix通过lmtp交付邮件 service lmtp {  unix_listener /var/spool/postfix/private/dovecot-lmtp {    mode = 0600    user = postfix    group = postfix   } } #验证服务,postfix也通过此验证用户 service auth {   unix_listener /var/spool/postfix/private/auth {     mode = 0666     user = postfix     group = postfix   }   unix_listener auth-userdb {     mode = 0600     user = vmail     #group =   }   user = dovecot } service auth-worker {   user = vmail }

新建用户用以访问邮件目录数据:

1 2 useradd -M -u 5000 vmail -d /var/mail -s /sbin/nologin chown -R vmail:vmail /var/mail/

参考:https://library.linode.com/email/postfix/postfix2.9.6-dovecot2.0.19-mysql

 转自:https://www.haiyun.me/archives/953.html

标签:dovecot,etc,Postfix,Mysql,virtual,postfix,auth,mysql,Dovecot
来源: https://www.cnblogs.com/javalinux/p/15841644.html