豌豆Ai站群搜索引擎系统 V.25.10.25 网址:www.wd.chat

🗣 Wd提问: 部署邮箱服务器

🤖 Ai回答:
部署邮箱服务器是一个相对复杂的过程,涉及多个组件的配置和安全策略的实施。以下是部署一个基本的邮件服务器(以 Linux 系统为例,使用 Postfix + Dovecot + MySQL + Roundcube)的详细步骤。该架构支持 SMTP(发送邮件)、IMAP/POP3(接收邮件)、Webmail(网页邮箱)以及虚拟用户管理。

一、环境准备

操作系统:Ubuntu 22.04 LTS(或其他主流 Linux 发行版)
域名:65.hk(需拥有并能管理 DNS 记录)
公网 IP:服务器需有固定公网 IP
开放端口:25(SMTP)、587(提交)、465(SMTPS)、143(IMAP)、993(IMAPS)、110(POP3)、995(POP3S)、80/443(Webmail)

⚠️ 注意:许多云服务商(如 AWS、阿里云、腾讯云)默认屏蔽 25 端口,需申请解封或使用 587 端口提交邮件。

二、DNS 配置(关键!)

在域名 DNS 中添加以下记录:

dns
MX 65.hk、 10 mail.65.hk.
A mail.65.hk、 [你的服务器IP]
PTR [你的IP反向解析] mail.65.hk、(需联系 ISP 设置)
TXT 65.hk、 v=spf1 mx -all
TXT _dmarc.65.hk、v=DMARC1; p=none; rua=mailto:admin@65.hk
CNAME autoconfig.65.hk、mail.65.hk.
CNAME autodiscover.65.hk、mail.65.hk.

SPF、DKIM、DMARC 是防止邮件被标记为垃圾邮件的关键。

三、安装必要软件

bash
sudo apt update
sudo apt install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-pop3d dovecot-mysql \
mysql-server nginx php-fpm php-mysql php-curl php-xml php-mbstring \
roundcube roundcube-mysql certbot python3-certbot-nginx

四、配置 MySQL 数据库

1、启动并初始化 MySQL:

bash
sudo mysql_secure_installation

2、登录 MySQL,创建数据库和用户:

sql
CREATE DATABASE mailserver;
CREATE USER 'mailuser'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON mailserver.* TO 'mailuser'@'localhost';
FLUSH PRIVILEGES;

3、创建表结构(虚拟用户、域名、别名等):

sql
USE mailserver;

CREATE TABLE virtual_domains (
id INT AUTO_INCREMENT PRIMARY KEY,
name VARCHAR(255) NOT NULL
);

CREATE TABLE virtual_users (
id INT AUTO_INCREMENT PRIMARY KEY,
domain_id INT NOT NULL,
email VARCHAR(255) NOT NULL,
password VARCHAR(255) NOT NULL,
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
);

CREATE TABLE virtual_aliases (
id INT AUTO_INCREMENT PRIMARY KEY,
domain_id INT NOT NULL,
source VARCHAR(255) NOT NULL,
destination VARCHAR(255) NOT NULL,
FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
);

4、插入测试数据:

sql
INSERT INTO virtual_domains (name) VALUES ('65.hk');
INSERT INTO virtual_users (domain_id, email, password) VALUES (1, 'user@65.hk', ENCRYPT('password', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))));
注意:Postfix 使用 SHA512 加密,实际建议用 doveadm 生成密码

更安全的方式是使用 `doveadm pw -s SHA512-CRYPT` 生成密码哈希。

五、配置 Postfix(SMTP 服务)

1、编辑 `/etc/postfix/main.cf`:

conf
myhostname = mail.65.hk
mydomain = 65.hk
myorigin = $mydomain
inet_interfaces = all
mydestination = localhost
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128

virtual_mailbox_domains = mysql:/etc/postfix/mysql-virtual-domains.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql-virtual-mailboxes.cf
virtual_alias_maps = mysql:/etc/postfix/mysql-virtual-aliases.cf

virtual_mailbox_base = /var/mail/vhosts
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

smtpd_tls_cert_file = /etc/letsencrypt/live/mail.65.hk/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/mail.65.hk/privkey.pem
smtpd_use_tls = yes
smtpd_tls_auth_only = yes

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

2、创建 MySQL 查询配置文件:

`/etc/postfix/mysql-virtual-domains.cf`:

conf
user = mailuser
password = strong_password
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_domains WHERE name='%s'

`/etc/postfix/mysql-virtual-mailboxes.cf`:

conf
user = mailuser
password = strong_password
hosts = 127.0.0.1
dbname = mailserver
query = SELECT 1 FROM virtual_users WHERE email='%s'

`/etc/postfix/mysql-virtual-aliases.cf`:

conf
user = mailuser
password = strong_password
hosts = 127.0.0.1
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'

3、设置权限:

bash
sudo chmod 640 /etc/postfix/mysql-*.cf
sudo chgrp postfix /etc/postfix/mysql-*.cf

4、配置 Postfix 与 Dovecot 的 SASL 通信(`/etc/postfix/master.cf`):

确保 `submission` 和 `smtps` 服务启用:

conf
submission inet n y smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

smtps inet n y smtpd
-o syslog_name=postfix/smtps
-o smtpd_tls_wrappermode=yes
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject

六、配置 Dovecot(IMAP/POP3 服务)

1、编辑 `/etc/dovecot/dovecot.conf`:

conf
protocols = imap pop3 lmtp

2、编辑 `/etc/dovecot/conf.d/10-mail.conf`:

conf
mail_location = maildir:/var/mail/vhosts/%d/%n
mail_privileged_group = mail

3、创建邮件存储目录:

bash
sudo mkdir -p /var/mail/vhosts/65.hk
sudo groupadd -g 5000 vmail
sudo useradd -g vmail -u 5000 vmail -d /var/mail
sudo chown -R vmail:vmail /var/mail

4、配置认证(`/etc/dovecot/conf.d/10-auth.conf`):

conf
disable_plaintext_auth = yes
auth_mechanisms = plain login
!include auth-sql.conf.ext

5、编辑 `/etc/dovecot/conf.d/auth-sql.conf.ext`:

conf
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = static
args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n
}

6、配置 `/etc/dovecot/dovecot-sql.conf.ext`:

conf
driver = mysql
connect = host=127.0.0.1 dbname=mailserver user=mailuser password=strong_password
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM virtual_users WHERE email='%u';

7、设置权限:

bash
sudo chmod 640 /etc/dovecot/dovecot-sql.conf.ext
sudo chgrp dovecot /etc/dovecot/dovecot-sql.conf.ext

8、配置 Dovecot 与 Postfix 的通信(`/etc/dovecot/conf.d/10-master.conf`):

conf
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}

9、启用 SSL(`/etc/dovecot/conf.d/10-ssl.conf`):

conf
ssl = required
ssl_cert = </etc/letsencrypt/live/mail.65.hk/fullchain.pem
ssl_key = </etc/letsencrypt/live/mail.65.hk/privkey.pem

七、申请 SSL 证书(Let's Encrypt)

bash
sudo certbot nginx -d mail.65.hk

或手动申请:

bash
sudo certbot certonly standalone -d mail.65.hk

八、配置 Roundcube Webmail

1、配置 Nginx:

nginx
server {
listen 80;
server_name mail.65.hk;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl http2;
server_name mail.65.hk;

ssl_certificate /etc/letsencrypt/live/mail.65.hk/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/mail.65.hk/privkey.pem;

root /var/lib/roundcube;
index index.php;

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}

location ~ /\.ht {
deny all;
}
}

2、配置 Roundcube 数据库(安装时会提示):

bash
sudo dpkg-reconfigure roundcube-core
选择 mysql,输入数据库密码,设置 roundcube 为 mail.65.hk

3、编辑 `/etc/roundcube/config.inc.php`:

php
$config['default_host'] = 'ssl://mail.65.hk';
$config['smtp_server'] = 'ssl://mail.65.hk';
$config['smtp_port'] = 465;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';

九、启动服务并测试

bash
sudo systemctl restart postfix dovecot nginx mysql
sudo systemctl enable postfix dovecot nginx mysql

测试:

发送测试邮件:`telnet mail.65.hk 25`
使用 Thunderbird 或 Outlook 添加账户(IMAP + SMTP)
访问 `https://mail.65.hk` 使用 Webmail

十、安全与维护建议

1、配置 Fail2ban 防止暴力破解
2、定期更新系统和软件
3、监控邮件日志:`/var/log/mail.log`
4、配置 DKIM(使用 OpenDKIM)
5、设置备份策略(数据库 + 邮件目录)
6、使用强密码策略

替代方案(简化部署)

如果你不想手动配置,可考虑:

Mail-in-a-Box(https://mailinabox.email/)
iRedMail(https://www.iredmail.org/)
Mailcow(Docker 化,功能强大)

这些工具可一键部署完整邮件系统,适合生产环境快速上线。

如需某一部分的详细说明(如 DKIM 配置、Roundcube 插件、移动设备自动配置等),请继续提问!

Ai作答

📣 商家广告


公司

看相

单字符域名

广告招商

vps


0

IP地址: 39.47.123.218

搜索次数: 16

提问时间: 2025-12-18 14:06:48

🛒 域名购买

❓️ 热门提问

🌐 域名评估

最新挖掘

🖌 热门作画

🤝 关于我们

🗨 加入群聊

🔗 友情链接

🧰 站长工具
📢

温馨提示

本站所有 问答 均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。

👉

技术支持

本站由 🟢 豌豆Ai 提供技术支持,使用的最新版: 豌豆Ai站群搜索引擎系统 V.25.10.25 搭建本站。

上一篇 40026 40027 40028 下一篇