🗣 Wd提问: 如何搭建一个邮箱服务器
🤖 Ai回答: 搭建一个邮箱服务器(Email Server)是一项复杂但非常有价值的工程,尤其适用于企业、组织或个人需要自建邮件系统以保障数据隐私和控制权。以下是搭建邮箱服务器的完整指南,基于主流开源技术(如 Postfix + Dovecot + MySQL + Roundcube),适合有一定 Linux 基础的用户。
🧩 一、准备工作
1、选择服务器
云服务器:推荐使用阿里云、腾讯云、AWS、Google Cloud 等。
配置建议:
操作系统:Ubuntu 20.04 / Debian 11
内存:≥ 2GB(建议 4GB)
CPU:≥ 2 核
硬盘:≥ 20GB(根据邮件量调整)
公网 IP 地址(必须)
2、域名与 DNS 设置
注册一个域名(如 `65.hk`)
在域名管理后台设置以下 DNS 记录:
A 记录:将 `mail.65.hk` 指向你的服务器公网 IP
MX 记录:指向 `mail.65.hk`(例如:`mail.65.hk` 优先级 10)
SPF 记录:`v=spf1 a mx ip4:你的服务器IP ~all`
DKIM 记录:生成并添加(用于邮件签名验证)
DMARC 记录:`v=DMARC1; p=quarantine; rua=mailto:dmarc@65.hk`
⚠️ 所有记录需在域名注册商处设置,生效时间可能长达数小时。
🛠️ 二、安装与配置核心组件
我们使用以下技术栈:
| 组件 | 功能 |
| Postfix | SMTP 邮件传输代理(负责收发邮件) |
| Dovecot | IMAP/POP3 协议服务(用于客户端读取邮件) |
| MySQL/MariaDB | 存储用户账户、密码、别名等信息 |
| Roundcube | Web 邮件客户端(网页版邮箱界面) |
| Let’s Encrypt SSL/TLS | 为邮件服务启用加密 |
步骤 1:更新系统 & 安装基础软件
bash
sudo apt update && sudo apt upgrade -y
sudo apt install -y postfix dovecot-core dovecot-imapd dovecot-pop3d mariadb-server php php-mysql php-curl php-gd php-intl php-mbstring php-soap php-xml php-zip php-cli php-fpm nginx
✅ 推荐使用 MariaDB 替代 MySQL(更轻量,兼容性好)
步骤 2:配置 MariaDB
bash
sudo mysql_secure_installation
创建数据库和用户:
sql
CREATE DATABASE mailserver;
CREATE USER 'mailuser'@'localhost' IDENTIFIED BY 'strong_password';
GRANT ALL PRIVILEGES ON mailserver.* TO 'mailuser'@'localhost';
FLUSH PRIVILEGES;
进入 MariaDB 创建表结构(可使用脚本或手动创建):
sql
USE mailserver;
用户表
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
email VARCHAR(255) UNIQUE NOT NULL,
password VARCHAR(255) NOT NULL,
created DATETIME DEFAULT CURRENT_TIMESTAMP
);
别名表(转发)
CREATE TABLE aliases (
id INT AUTO_INCREMENT PRIMARY KEY,
source VARCHAR(255) NOT NULL,
destination VARCHAR(255) NOT NULL
);
步骤 3:配置 Postfix(SMTP)
编辑主配置文件:
bash
sudo nano /etc/postfix/main.cf
关键配置项(请替换 `65.hk` 为你的域名):
conf
myhostname = mail.65.hk
mydomain = 65.hk
myorigin = $mydomain
inet_interfaces = loopback-only
mydestination = localhost, localhost.$mydomain, $mydomain
mynetworks = 127.0.0.0/8 [::1]/128
home_mailbox = Maildir/
virtual_alias_domains = $mydomain
virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual-aliases.cf
virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual-domains.cf
virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual-mailboxes.cf
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000
smtpd_sasl_auth_enable = yes
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $mydomain
smtpd_tls_security_level = may
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_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
smtp_tls_session_cache_database = btree:/var/lib/postfix/smtp_scache
创建数据库映射文件:
bash
sudo nano /etc/postfix/mysql-virtual-mailboxes.cf
内容:
conf
hosts = localhost
user = mailuser
password = strong_password
dbname = mailserver
query = SELECT CONCAT(SUBSTR(email, 1, POSITION('@' IN email)), '/', SUBSTR(email, POSITION('@' IN email)+1), '/Maildir/') FROM users WHERE email='%s'
类似地创建 `mysql-virtual-aliases.cf`、`mysql-virtual-domains.cf`。
步骤 4:配置 Dovecot
编辑配置文件:
bash
sudo nano /etc/dovecot/dovecot.conf
确保开启:
conf
protocols = imap pop3 lmtp
listen = *
修改 `10-mail.conf`:
conf
mail_location = maildir:/home/vmail/%d/%n/Maildir
修改 `10-ssl.conf`:
conf
ssl = yes
ssl_cert_file = /etc/letsencrypt/live/mail.65.hk/fullchain.pem
ssl_key_file = /etc/letsencrypt/live/mail.65.hk/privkey.pem
配置用户权限:
bash
sudo mkdir -p /home/vmail
sudo chown vmail:vmail /home/vmail
sudo chmod 755 /home/vmail
创建虚拟用户(示例):
bash
sudo useradd -r -u 5000 -g vmail -d /home/vmail -s /sbin/nologin vmail
配置 `90-sql.conf`:
conf
passdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
userdb {
driver = sql
args = /etc/dovecot/dovecot-sql.conf.ext
}
创建 `/etc/dovecot/dovecot-sql.conf.ext`:
conf
driver = mysql
connect = host=localhost dbname=mailserver user=mailuser password=strong_password
default_pass_scheme = SHA512-CRYPT
password_query = SELECT email as user, password FROM users WHERE email='%u'
user_query = SELECT home, uid, gid FROM users WHERE email='%u'
步骤 5:配置 Roundcube Web 客户端
安装并配置:
bash
cd /var/www/html
sudo wget https://github.com/Roundcube/roundcubemail/releases/download/1.6.7/roundcubemail-1.6.7-complete.tar.gz
sudo tar -xzf roundcubemail-1.6.7-complete.tar.gz
sudo mv roundcubemail-1.6.7/* ./
sudo rm -rf roundcubemail-1.6.7*
sudo chown -R www-data:www-data .
配置数据库连接:
bash
sudo cp config/config.inc.php.dist config/config.inc.php
sudo nano config/config.inc.php
修改:
php
$config['db_dsnw'] = 'mysqli://mailuser:strong_password@localhost/mailserver';
$config['default_host'] = 'localhost';
$config['smtp_server'] = 'localhost';
$config['smtp_port'] = 587;
$config['smtp_user'] = '%u';
$config['smtp_pass'] = '%p';
$config['smtp_auth_type'] = 'LOGIN';
$config['support_url'] = '';
设置 Nginx 虚拟主机:
nginx
/etc/nginx/sites-available/mail.65.hk
server {
listen 80;
server_name mail.65.hk;
root /var/www/html;
index index.php index.html;
location / {
try_files $uri $uri/ =404;
}
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.1-fpm.sock;
}
Let's Encrypt HTTPS 重定向
location /.well-known/acme-challenge/ {
root /var/www/html;
}
}
启用站点:
bash
sudo ln -s
📣 商家广告 :
👍
0
👎
IP地址: 89.65.60.105
搜索次数: 7
提问时间: 2025-11-11 11:36:44
🛒 域名购买 :
zhuang.net.cn pxks.cn 70.gs kt6.cn diaowang.com.cn jamctr.com 6.tj.cn kxtf.cn 926.net.cn qz.gs
❓️ 热门提问 :
便宜的香港主机 云服务器吧 计算机网络服务器是指什么 新加坡机房哪个好 游戏服务器怎么租 内蒙古农信注册入口怎么找不到 香港vps 服务器 哈尔滨机房托管 新加坡vps家宽 机房集中监测 豌豆Ai站群搜索引擎系统
🌐 域名评估 :
shengmar.com 61tc.cc allonedu.com wanzhi.ai vtoltower.com omgmhz.cn xphone.ltd lytxw.com alhl.cn vivo.he.cn
⛏ 最新挖掘 :
凯里酸汤鱼 贵阳烤脑花 都匀毛尖茶 花溪牛肉粉 贵阳烤生蚝 贵阳烤豆腐 贵阳纸包鱼 贵阳特色菜
🖌 热门作画 :
🤝 关于我们:
豌豆Ai
域名
建站
站群
留痕
推广
评估
源码
开发Ai
工具
日记
价格
加盟
广告
流量
留言
联系
🗨 加入群聊 :
🔗 友情链接 :
软件开发定制
google站群
ai提问
🧰 站长工具 :Ai工具 whois查询 搜索
📢 温馨提示 :本站所有问答由Ai自动创作,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
👉 技术支持 :本站由豌豆Ai 提供技术支持,使用的最新版:《豌豆Ai站群搜索引擎系统 V.25.10.25》搭建本站。