- DNS服务器(使用项目二)
- 数据库服务器(使用项目二)
- 邮箱服务器 (全新创建)
- 安装桌面程序 (Foxmail)))
- 页面最下方有一个
Setup password输入框。随便输入一个密码(比如qaz123456),然后点击 Generate password hash。 页面刷新后,上方会出现一行带有哈希值的红字或提示,类似于:
$CONF['setup_password'] = '248c8b5....:12ab...';- 回到浏览器,刷新
setup.php页面。 - 此时页面下方会出现输入密码后添加超级管理员(Superadmin)的表单。
- 第一栏
Setup password填入你刚才设置的明文密码(如qaz123456)。 - 下面填入你要创建的管理员邮箱(比如
admin@mail.com)和对应的登录密码。 - 点击添加。
- 登录账号在顶部导航栏找到 “域名清单” -> “添加域”。
在弹出的表单中:
- 域: 填入域名不加前缀
mail.com。 - 别名数与邮箱数: 0
- **其他不动。
- 域: 填入域名不加前缀
- 点击“新增”。
- 在顶部导航栏找到 “虚拟用户清单” -> “添加邮箱”。
在弹出的表单中:
- 用户名: 填入
user1(下拉框会自动帮你选上@mail.com)。 - 密码: 设置一个好记的测试密码(比如
123456或者User@123),并重复确认。 - 姓名: 随便填(比如“测试用户1”)。
- 用户名: 填入
- 点击“新增”。
- 重复这个步骤,再建一个
user2@mail.com。 - 成功标志:如果终端返回了类似
mailcomd.cn/user1/这样的目录路径,说明 Postfix 已经完美打通了远端数据库!配置成功 MTA(邮件传输代理)已经拥有了鉴别虚拟用户的能力 - 失败标志:如果什么都没返回,或者报错
can't connect to mysql,则说明密码写错了或 100 服务器的防火墙又拦截了。 - 收信库管理:让用户可以通过 Foxmail/Outlook (POP3/IMAP) 来把
/var/vmail/里的信读走。 - 发信保镖 (SASL):当用户要往外网发信时,Postfix 会拜托 Dovecot 去查一下数据库,看看这个发信人的密码对不对(防止服务器变成被黑客利用的垃圾邮件中继站)。
- 接收服务器类型:保持
POP3即可。(如果你想在多台电脑/手机上同步查看邮件,建议下拉选择IMAP,此时后面的端口会自动变成 143)。 - 邮件账号:填入你在网页上创建的完整邮箱地址,例如:
user1@mailcomd.cn(注意:必须包含@mailcomd.cn后缀,不能只填user1)。 - 密码:填入你在 PostfixAdmin 里为
user1设置的那个登录密码。 - POP 服务器:为了排除测试电脑 DNS 解析延迟的干扰,这里最稳妥的办法是直接填服务器的 IP:
192.168.6.200。(如果你确信本地主机的 DNS 或 hosts 已经指向准确,填mail.mailcomd.cn也可以)。 - SMTP 服务器:同样填入:
192.168.6.200。 - SSL 勾选框:千万不要勾选 SSL! 我们目前搭建的是基础架构,还没有去配置加密证书。
- 端口:保持默认的
110(POP3) 和25(SMTP) 不要动。 - STARTTLS:下方那个“如服务器支持,用STARTTLS加密传输”的框,也不要勾选。
Ctenos7邮箱服务器搭建
使用mysql+PHP+nginx环境,搭建Postfix+Dovecot+Postfixadmin邮箱服务器
**列表清单
**首先DNS服务器配置域名
named配置文件声明
vi /etc/named.rfc1912.zones
//添加
zone "mailcomd.cn" IN {
type master;
file "mail.com.zone";
allow-update { none; };
};**复制基本模板改名为mail.forward并编辑
$TTL 3H
@ IN SOA mailcomd.cn. rname.invalid. (
0 ; serial
1D ; refresh
1H ; retry
1W ; expire
3H ) ; minimum
@ IN NS ns.mailcomd.cn.
@ IN MX 10 mail.mailcomd.cn.
www IN A 192.168.6.200
ns IN A 192.168.6.200
mail IN A 192.168.6.200
pop3 IN A 192.168.6.200
imap4 IN A 192.168.6.200
root IN A 192.168.6.200 **重启dns服务
systemctl restart named检查各个域名是否正常解析
nslookup www.mailcomd.cn==域名服务器部署完工==
_
**配置关于postfix数据库(复用项目二工单数据库服务器)
//连接数据库
mysql -uroot -p
//回车输入密码
-- 1. 创建数据库
CREATE DATABASE postfix DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
-- 2. 创建用户,并强制指定使用旧版兼容的密码加密方式 (非常关键)
CREATE USER 'postfix'@'%' IDENTIFIED WITH mysql_native_password BY 'Postfix@123';
-- 3. 授予权限
GRANT ALL PRIVILEGES ON postfix.* TO 'postfix'@'%';
-- 4. 刷新权限使其生效
FLUSH PRIVILEGES;
EXIT;**在创建一台邮箱服务器安装Nginx与PHP
yum install -y nginx
# 1. 安装 EPEL 和 yum 扩展工具
yum install -y epel-release yum-utils
# 2. 安装 Remi 软件源
yum install -y http://rpms.remirepo.net/enterprise/remi-release-7.rpm
# 3. 启用 PHP 7.4 源
yum-config-manager --enable remi-php74
# 4. 安装 PHP 7.4 及其核心扩展 (注意这里用的是 php-mysqlnd)
yum install -y php php-fpm php-mysqlnd php-mbstring php-imap
# 5. 启动并设置开机自启
systemctl start php-fpm
systemctl start nginx
systemctl enable php-fpm
systemctl enable nginx
**关闭SElinux与防火墙放行
sed -i 's/^SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config && setenforce 0
firewall-cmd --add-port={9000,80,25,110,143}/tcp --permanent
firewall-cmd --reload**下载并部署 PostfixAdmin 3.3.11
cd /usr/share/nginx/html
# 下载 3.3.11 稳定版
wget https://github.com/postfixadmin/postfixadmin/archive/postfixadmin-3.3.11.tar.gz
# 解压并重命名文件夹
tar -zxvf postfixadmin-3.3.11.tar.gz
mv postfixadmin-postfixadmin-3.3.11 postfixadmin
# 创建缓存目录(PostfixAdmin 运行必须)
mkdir -p /usr/share/nginx/html/postfixadmin/templates_c
# 赋予 Nginx 用户权限(假设你的 Nginx 运行用户是 nginx,如果不确定可以执行 ps -ef | grep nginx 看一下)
chown -R nginx:nginx /usr/share/nginx/html/postfixadmin**PostfixAdmin配置数据库连接
vi /usr/share/nginx/html/postfixadmin/config.local.php<?php
$CONF['configured'] = true;
$CONF['database_type'] = 'mysqli';
$CONF['database_host'] = '192.168.6.100';
$CONF['database_user'] = 'postfix';
$CONF['database_password'] = 'Postfix@123';
$CONF['database_name'] = 'postfix';
$CONF['domain_path'] = 'YES';
$CONF['domain_in_mailbox'] = 'NO';
$CONF['encrypt'] = 'md5crypt';
?>**PostfixAdmin配置nginx
vi /etc/nginx/conf.d/postfixadmin.confserver {
listen 80;
server_name www.mailcomd.cn;
root /usr/share/nginx/html/postfixadmin/public;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php;
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}**重载nginx
nginx -t
systemctl reload nginx接下来在网页上的操作步骤(PostfixAdmin 初始化)
打开网址
//域名访问
http://www.mailcomd.cn/setup.php
//ip访问
http://192.168.6.200/setup.php第一步:生成 Setup Password(安装密码)
第二步:将哈希值写入配置文件
打开邮箱服务器,编辑刚才的本地配置文件:
Bash
vi /usr/share/nginx/html/postfixadmin/config.local.php将网页上生成的那整行 $CONF['setup_password'] = '...'; 复制粘贴到文件末尾(?> 的上方),保存退出。
第三步:创建超级管理员账号
完成后,你就可以点击页面的登录链接(或访问 http://www.mailcomd.cn/login.php),用刚才创建的管理员账号登录进入 PostfixAdmin 的可视化控制台
第四步:创建测试账号
创建成功后刷新检查,就意味着你的数据库里已经有了真实的账号密码数据。
==Web 界面完成==
**接下来邮件服务器 安装核心组件
安装能够处理收发信件的核心底层软件:Postfix(负责发信和转递,MTA)和 Dovecot(负责收信和存储,MRA/MDA)。
# 安装 Postfix 和 Dovecot,以及 Dovecot 连接 MySQL 所需的依赖模块
yum install -y postfix dovecot dovecot-mysql**第一步:准备邮件存放的专用“仓库”
真实的邮件是以文件的形式存在硬盘上的。我们需要创建一个专属的系统用户和目录,专门用来存放所有的邮件数据。(虚拟用户映射)既安全又高效。
# 1. 创建一个名为 vmail 的组(指定 GID 为 5000,方便管理)
groupadd -g 5000 vmail
# 2. 创建一个名为 vmail 的系统用户,不分配登录权限,专门用于管理邮件
useradd -u 5000 -g vmail -s /sbin/nologin -d /var/vmail -m vmail
# 3. 确保这个目录的权限完全归 vmail 所有
chown -R vmail:vmail /var/vmail
chmod -R 770 /var/vmail**第二步:配置 Postfix (发信与收信网关)
告诉 Postfix,它不再为系统本地用户(比如 root)收发信了,而是要转变为一个虚拟域邮件网关。
1. 修改 Postfix 主配置文件 打开配置文件:
Bash
vi /etc/postfix/main.cf2. 核心参数修改与添加 你需要在这个文件里找到相应的行进行修改,如果没有的行,就直接添加到文件的最末尾。
找到并修改以下基础信息:
# 设置你的主机名和域名
myhostname = mail.mailcomd.cn
mydomain = mailcomd.cn
myorigin = $mydomain
# 监听所有网卡接口
inet_interfaces = all
inet_protocols = ipv4
# 非常关键:将本地域名设置为空!因为我们将使用虚拟域名
mydestination =
然后在文件最末尾,添加虚拟域配置(告诉 Postfix 去连接数据库):
# --- Virtual Mailbox Settings ---
virtual_mailbox_base = /var/vmail
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
# 告诉 Postfix,所有的虚拟域邮件都直接交给 Dovecot 处理,不要自己瞎转圈
virtual_transport = lmtp:unix:private/dovecot-lmtp
# 告诉 Postfix 用这些配置文件去连 MySQL 查询数据
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修改完成后保存退出 (:wq)。
**第三步:配置 Postfix (编写 MySQL 桥接文件 (核心关键))
依次创建以下三个文件,并粘贴对应的内容(注意里面的数据库 IP 密码必须精准):
1. 域名查询文件
Bash
vi /etc/postfix/mysql_virtual_domains_maps.cf填入以下内容:
hosts = 192.168.6.100
user = postfix
password = Postfix@123
dbname = postfix
query = SELECT domain FROM domain WHERE domain='%s' AND active = '1'2. 邮箱查询文件
vi /etc/postfix/mysql_virtual_mailbox_maps.cf填入以下内容:
hosts = 192.168.6.100
user = postfix
password = Postfix@123
dbname = postfix
query = SELECT maildir FROM mailbox WHERE username='%s' AND active = '1'3. 别名查询文件
Bash
vi /etc/postfix/mysql_virtual_alias_maps.cf填入以下内容:
hosts = 192.168.6.100
user = postfix
password = Postfix@123
dbname = postfix
query = SELECT goto FROM alias WHERE address='%s' AND active = '1'**Postfix 的重启与自启
systemctl restart postfix
systemctl enable postfix🟢 连通性测试
文件建好后,直接用 Postfix 自带的工具测试它能不能连上数据库并查到你刚建的账号。
在终端执行这个命令(请把你刚在网页上建的真实测试邮箱替换掉下面的 user1@mailcomd.cn)
postmap -q user1@mailcomd.cn mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf==Postfix配置完工==
**最后配置 Dovecot (收信与认证服务)
Dovecot 承担着两个极其关键的任务:
请在你的邮件服务器上依次修改以下 Dovecot 配置文件:
1. 开启基础协议
打开主配置文件:
Bash
vi /etc/dovecot/dovecot.conf找到 #protocols = imap pop3 lmtp 这一行,去掉前面的 # 注释(如果没找到,直接在文件末尾加上):
protocols = imap pop3 lmtp2. 指定邮件存放仓库
告诉 Dovecot 去哪里读邮件。
vi /etc/dovecot/conf.d/10-mail.conf找到 mail_location 这一行,将其修改为我们之前建好的 vmail 目录规则,并指定好 UID 和 GID:
mail_location = maildir:/var/vmail/%d/%n
mail_uid = 5000
mail_gid = 50003. 切换认证方式为 MySQL并关闭ssl
打开 Dovecot 的 SSL 配置文件:
vi /etc/dovecot/conf.d/10-ssl.conf在文件比较靠前的位置(大概第 6 行或第 8 行),找到 ssl = required(或者可能是 ssl = yes)。 把它修改为:
ssl = no(这会告诉 Dovecot:不要强制要求 SSL 证书连接。) 保存退出。
Dovecot 默认去查 Linux 系统密码,我们需要把它强行扭转去查数据库。
vi /etc/dovecot/conf.d/10-auth.conf在这个文件里,找到并修改以下三处(注意看前面的注释符号 #,该去掉的去掉,该加上的加上,改,该修改的修改):
# 允许纯文本认证(为了前期测试方便,不强制要求 SSL 加密)
disable_plaintext_auth = no
# 设置认证机制
auth_mechanisms = plain login
# 找到包含 system.conf 的这行,在前面加 # 注释掉它 (禁用系统本地认证)
#!include auth-system.conf.ext
# 找到包含 sql.conf 的这行,去掉前面的 # 开启它 (启用数据库认证)
!include auth-sql.conf.ext
4. 编写 Dovecot 专属的数据库连接书
现在我们要告诉 Dovecot 怎么连数据库,以及密码是用什么方式加密的。我们之前在 PostfixAdmin 里配置的是 md5crypt。
vi /etc/dovecot/dovecot-sql.conf.ext你可以清空里面的所有内容,直接粘贴以下这段最精简有效的配置(注意数据库 IP 和密码):
driver = mysql
connect = host=192.168.6.100 dbname=postfix user=postfix password=Postfix@123
# PostfixAdmin 默认的密码加密方式
default_pass_scheme = MD5-CRYPT
# 验证密码的 SQL 语句
password_query = SELECT username AS user, password FROM mailbox WHERE username = '%u' AND active='1'
# 获取用户邮箱目录的 SQL 语句
user_query = SELECT maildir, 5000 AS uid, 5000 AS gid FROM mailbox WHERE username = '%u' AND active='1'5. 为 Postfix 开启 SASL 认证通道
打开 Postfix 主配置文件:
Bash
vi /etc/postfix/main.cf在文件的最末尾,追加以下几行用来开启发信安全校验的代码:
# === SMTP Auth (SASL) Settings ===
# 告诉 Postfix 使用 Dovecot 的认证插件
smtpd_sasl_type = dovecot
# 指定认证接口的路径 (相对于 Postfix 运行环境的相对路径)
smtpd_sasl_path = private/auth
# 开启发信认证功能
smtpd_sasl_auth_enable = yes
# 核心安全规则:允许本机发信、允许密码验证通过的人发信、拒绝其他一切代发请求
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination这是最后一步联动!我们要让 Dovecot 开一个小后门,让 Postfix 能够随时过来问密码。
vi /etc/dovecot/conf.d/10-master.conf在这个文件里搜索 service auth {(大概在 70+行左右)。仔细修改这段大括号里面的内容,修改后应该长这样:
service auth {
# 把原本的 unix_listener auth-userdb 注释或保持原样
# 添加下面这块给 Postfix 用的认证通道
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
user = postfix
group = postfix
}
}
🟢 重启并检查服务状态
五个文件修改保存后,直接重启 Dovecot 让配置生效:
systemctl restart dovecot
systemctl enable dovecot然后执行查看状态命令:
systemctl status dovecot只要看到绿色的 active (running),没有满屏的红色报错,说明我们的邮件认证核心也已经成功启动!
验收阶段
📝 具体填写说明:
全部核对无误后,点击最下方的 “创建” 按钮!
Warning: Undefined array key "HTTP_ACCEPT_LANGUAGE" in /www/sites/zhanbolg.cn/index/usr/themes/farallon/comments.php on line 4
Deprecated: stripos(): Passing null to parameter #1 ($haystack) of type string is deprecated in /www/sites/zhanbolg.cn/index/usr/themes/farallon/comments.php on line 4