postfix + dovecot + mysql 创建虚拟用户(二)

本文详细介绍了Dovecot邮件服务器的配置过程,包括主配置文件、用户验证、SSL安全配置等关键步骤,适用于初学者快速搭建邮件系统。

紧接上篇文章。关于postfix的配置上一篇文章已经给大家介绍了。
这篇文章给大家介绍下Dovecot的相关配置。(文件下载在最后)
附上一篇博客地址:https://blog.youkuaiyun.com/bicheng4769/article/details/102960319

Dovecot配置:

需要修改的文件:

  • /etc/dovecot/dovecot.conf Dovecot的主配置文件
  • /etc/dovecot/conf.d/10-mail.conf Dovecot磁盘路径相关配置信息
  • /etc/dovecot/conf.d/10-auth.conf Dovecot用户验证相关配置信息
  • /etc/dovecot/conf.d/10-master.conf Dovecot本地socket相关配置信息
  • /etc/dovecot/conf.d/10-ssl.conf Dovecot关于SSL的相关配置信息
    重要的话说三遍:
    修改之前请注意备份
    修改之前请注意备份
    修改之前请注意备份

修改 /etc/dovecot/dovecot.conf 文件

listen = *
dict {
  #quota = mysql:/etc/dovecot/dovecot-dict-sql.conf.ext
  #expire = sqlite:/etc/dovecot/dovecot-dict-sql.conf.ext
}
!include conf.d/*.conf
!include_try local.conf
passdb {
  #指定认证密码的方式采用sql认证,使用的sql是使用dovecot-sql.conf.ext的配置
  driver = sql
  args = /etc/dovecot/dovecot-sql.conf.ext
}
#指定用认证,采用静态统一的用户,也就是我们之前设置vmail账户 5000就是uid
userdb {
  driver = static
  args = uid=5000 gid=5000 home=/mnt/vmail/%d/%n

}
#调试阶段建议开启debug模式
auth_debug_passwords= no
mail_debug= no
auth_verbose=no
auth_verbose_passwords=plain

上述配置的大概意思 开启conf.d下面所有的配置,配置认证方式,采用sql认证。

修改 /etc/dovecot/dovecot-sql.conf.ext文件

如果没有的话直接创建也可以:
内容如下:

driver = mysql

connect = host=127.0.0.1 dbname=email user=root password=root port=3306

default_pass_scheme = plain

password_query = SELECT username AS user,password FROM mailbox WHERE username = '%u' AND active='1';

user_query = SELECT maildir, 5000 AS uid, 5000 AS gid, CONCAT('dict:storage=',floor(quota/1000),' proxy::quota') as quota FROM mailbox WHERE username = '%u' AND active='1';

基本和之前postfix的配置差不多。

修改 /etc/dovecot/conf.d/10-mail.conf 文件

#指定邮件存储的地址
mail_location = maildir:/mnt/vmail/%d/%n/Maildir
#=。= 不知道为啥
first_valid_uid = 1000
# 同上
mbox_write_locks = fcntl

修改 /etc/dovecot/conf.d/10-auth.conf 文件

# 增加明文认证
disable_plaintext_auth = no
auth_mechanisms = plain login

修改 /etc/dovecot/conf.d/10-master.conf 文件

service imap-login {
  inet_listener imap {
    port = 143
  }
  inet_listener imaps {
    #port = 993
    #ssl = yes
  }
}

service pop3-login {
  inet_listener pop3 {
    port = 110
  }
  inet_listener pop3s {
    #port = 995
    #ssl = yes
  }
}
service lmtp {
  unix_listener lmtp {
    #mode = 0666
  }
}
service imap {
  #process_limit = 1024
}
service pop3 {
  #process_limit = 1024
}
service auth {
  unix_listener auth-userdb {
    mode = 0666
    user = vmail
    group = vmail
  }
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth {
    mode = 0666
    user = postfix
    group = postfix
  }
}
service auth-worker {
  #user = root
}

service dict {
  unix_listener dict {
    #mode = 0600
    #user =
    #group =
  }
}

设置 auth-userdb 为之前创建的 postfix 专用用户 vmail

修改 /etc/dovecot/conf.d/10-ssl.conf 文件


ssl = yes
ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
ssl_key = </etc/pki/dovecot/private/dovecot.pem

重启dovecot

service postfix restart

该如何测试?
在之前的文章中数据库有几章表,在对应的表中添加数据
domain 添加对应的域名
我这里给一条sql:

INSERT INTO `domain` (`domain`,`description`,`aliases`,`mailboxes`,`maxquota`,`quota`,`transport`,`backupmx`,`created`,`modified`,`active`) VALUES ('test.cn','江苏',0,0,10,2048,'virtual',0,'1970-01-01 00:00:00','1970-01-01 00:00:00',1);

mailbox加入数据:

INSERT INTO `mailbox` (`username`,`password`,`name`,`maildir`,`quota`,`local_part`,`domain`,`created`,`modified`,`active`,`is_deleted`) VALUES
 ('cj@test.cn','123456','caojing','test.cn/caojing/',0,'caojing','caojing.cn','2019-11-05 16:58:30','2019-11-05 16:58:30',1,NULL);

别名表 alias也添加一条记录:

INSERT INTO `alias` (`address`,`goto`,`domain`,`created`,`modified`,`active`) VALUES 
('caojing@test.cn','caojing@test.cn','test.cn','2019-11-05 16:58:30','2019-11-05 16:58:30',1);

测试:

我们这里使用建议的第三方应用登录,我使用的是网易闪电邮,直接百度就可以下载了
@网易爸爸 给我广告费哦
填入帐号密码 :

就我们刚才数据库插入的 caojing@test.cn 密码:123456
下一步

我们这里使用的是ssl登录,所以 端口就不是25了,而是465。
注意这里有个 “测试账户当前配置”,点一下,如果没有没有问题,就会出现如图所示:
在这里插入图片描述
ok至此配置成功:

总结:
多看官方文档,对陌生的东西,官方说明永远是最直接最准确的。
dovecot配置下载

<think>好的,用户想搭建基于PostfixDovecot、ExtMail和MySQL的邮件服务器,需要配置这些组件的步骤。首先,我得回忆一下各个组件的作用。Postfix是负责邮件传输代理(MTA),处理邮件的发送和接收;Dovecot是IMAP/POP3服务器,让用户能通过客户端访问邮件;ExtMail提供Web界面;MySQL用于存储用户和域的信息。 首先,用户可能已经安装了这些软件,但需要确认安装步骤是否正确。比如在Ubuntu上,用apt安装postfixdovecot-core、mysql-server等。然后配置MySQL创建数据库和用户,导入ExtMail的表结构,这部分可能需要参考引用[3],里面提到建立数据库用户extmail@localhost,初始密码是extmail。所以需要确保用户权限正确,数据库表结构正确导入。 接下来是Postfix的配置,用户需要修改main.cf文件,设置mydomain、myhostname,以及虚拟域和邮箱的映射。这里引用[1]和[2]提到了virtual_mailbox_domains和virtual_alias_maps的配置,需要指向MySQL的配置文件。比如virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf,这些配置文件需要正确设置数据库连接参数,如用户名、密码、数据库名和查询语句。 然后配置Dovecot,需要启用MySQL认证,修改10-auth.conf、10-mail.conf、10-master.conf等文件,指定用户查询的SQL语句,以及SSL证书的位置。Dovecot需要和Postfix使用相同的虚拟用户设置,确保用户认证一致。 安装ExtMail和ExtMan可能需要从源码或特定仓库获取,配置Apache或Nginx作为Web服务器,设置虚拟主机指向ExtMail的目录。需要处理权限问题,比如邮件存储目录的权限,确保Web用户(如www-data)有访问权限。 最后测试各个组件,检查日志排除错误。比如Postfix的日志在/var/log/mail.log,Dovecot的日志可能在/var/log/dovecot.log。用户可能遇到的常见问题包括数据库连接失败、权限错误、配置语法错误等,需要逐步排查。 用户提供的引用中还提到在mail.cf里的mynetworks字段添加网段,如引用[4]所述,可能需要调整允许的网段,确保其他客户端可以发送邮件。另外,SSL证书的配置也是关键,避免使用自签名证书导致客户端警告。 总结步骤应该是:安装软件包→配置MySQL→配置Postfix→配置Dovecot→部署ExtMail→设置Web服务器→测试。需要详细写出每个步骤的具体命令和配置文件修改,确保用户能一步步跟随操作。同时注意引用中的具体路径和配置示例,确保准确性。</think>### 基于Postfix+Dovecot+ExtMail+MySQL的邮件服务器配置步骤 #### 一、基础环境准备 1. **安装依赖包** ```bash sudo apt update sudo apt install postfix dovecot-core dovecot-imapd dovecot-mysql mysql-server apache2 libapache2-mod-perl2 ``` - Postfix作为MTA,Dovecot提供IMAP/POP3服务,MySQL存储用户数据,Apache运行ExtMail Web界面。 2. **配置MySQL数据库** - 创建数据库及用户(参考引用[3]): ```sql CREATE DATABASE extmail; CREATE USER 'extmail'@'localhost' IDENTIFIED BY 'extmail'; GRANT ALL PRIVILEGES ON extmail.* TO 'extmail'@'localhost'; FLUSH PRIVILEGES; ``` - 导入ExtMail表结构(需从ExtMail源码获取`extmail.sql`): ```bash mysql -u extmail -p extmail < /path/to/extmail.sql ``` --- #### Postfix配置 1. **主配置文件 `/etc/postfix/main.cf`** 修改以下参数(参考引用[2]): ```ini myhostname = mail.example.com mydomain = example.com myorigin = $mydomain inet_interfaces = all virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf virtual_uid_maps = static:5000 virtual_gid_maps = static:5000 ``` - `virtual_uid/gid_maps`需匹配系统用户`vmail`的UID/GID(需提前创建)。 2. **MySQL映射配置文件** - **`/etc/postfix/mysql_virtual_domains_maps.cf`**(参考引用[1]): ```ini user = extmail password = extmail hosts = localhost dbname = extmail query = SELECT domain FROM domain WHERE domain='%s' ``` --- #### 三、Dovecot配置 1. **启用MySQL认证** 修改 `/etc/dovecot/conf.d/10-auth.conf`: ```ini auth_mechanisms = plain login !include auth-sql.conf.ext ``` 2. **配置用户查询 `/etc/dovecot/conf.d/auth-sql.conf.ext`** ```ini passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n } ``` 3. **数据库连接 `/etc/dovecot/dovecot-sql.conf.ext`** ```ini driver = mysql connect = host=localhost dbname=extmail user=extmail password=extmail default_pass_scheme = CRYPT password_query = SELECT username AS user, password FROM mailbox WHERE username = '%u' ``` --- #### 四、部署ExtMail Web界面 1. **安装ExtMail与ExtMan** ```bash wget http://download.extmail.org/extmail-1.2.tar.gz tar zxvf extmail-1.2.tar.gz -C /var/www/ mv /var/www/extmail-1.2 /var/www/extmail ``` 2. **配置Apache虚拟主机** ```apache <VirtualHost *:80> ServerName mail.example.com DocumentRoot /var/www/extmail/html <Directory /var/www/extmail/html> Options -Indexes +FollowSymLinks AllowOverride All Require all granted </Directory> </VirtualHost> ``` --- #### 五、测试与排错 1. **检查服务状态** ```bash systemctl restart postfix dovecot apache2 tail -f /var/log/mail.log # 查看Postfix日志 ``` 2. **常见问题** - **数据库连接失败**:检查MySQL用户权限及密码(参考引用[3])。 - **权限错误**:确保`/var/mail/vhosts`目录属主为`vmail`用户。 - **邮件收发测试**:使用`telnet`或客户端(如Thunderbird)验证。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值