核心组件与原理
邮件服务器需三大组件协同:
- Postfix:SMTP服务(邮件传输)
- Dovecot:IMAP/POP3服务(邮箱访问)
- 数据库:存储账户信息(推荐MySQL/MariaDB)
系统准备(Ubuntu 22.04 LTS)
sudo apt update && sudo apt upgrade -y sudo hostnamectl set-hostname mail.yourdomain.com # 替换为你的域名
防火墙配置
sudo ufw allow 25,465,587/tcp # SMTP端口 sudo ufw allow 143,993,110,995/tcp # IMAP/POP3端口 sudo ufw enable
分步安装配置
安装Postfix
sudo apt install postfix postfix-mysql -y
安装时选择:
- 邮件类型:Internet Site
- 系统邮件名:mail.yourdomain.com
数据库配置
sudo apt install mariadb-server -y sudo mysql_secure_installation # 设置root密码
创建邮件数据库:
CREATE DATABASE mailserver; GRANT ALL ON mailserver.* TO 'mailuser'@'localhost' IDENTIFIED BY 'StrongPassword!'; FLUSH PRIVILEGES; USE mailserver; CREATE TABLE virtual_domains (id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(50) NOT NULL); CREATE TABLE virtual_users (id INT AUTO_INCREMENT PRIMARY KEY, domain_id INT NOT NULL, email VARCHAR(100) NOT NULL, password VARCHAR(106) NOT NULL); CREATE TABLE virtual_aliases (id INT AUTO_INCREMENT PRIMARY KEY, domain_id INT NOT NULL, source VARCHAR(100) NOT NULL, destination VARCHAR(100) NOT NULL);
集成Postfix与数据库
编辑 /etc/postfix/mysql-virtual-domains.cf
:
user = mailuser password = StrongPassword! hosts = 127.0.0.1 dbname = mailserver query = SELECT name FROM virtual_domains WHERE name='%s'
重复创建 mysql-virtual-users.cf
和 mysql-virtual-aliases.cf
文件,分别对应用户和别名表。
配置Dovecot
sudo apt install dovecot-core dovecot-imapd dovecot-pop3d dovecot-mysql -y
关键配置 (/etc/dovecot/dovecot.conf
):
mail_location = maildir:/var/mail/vhosts/%d/%n passdb { driver = sql args = /etc/dovecot/dovecot-sql.conf.ext } userdb { driver = static args = uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n }
创建专用用户:
sudo groupadd -g 5000 vmail sudo useradd -g vmail -u 5000 vmail -d /var/mail/vhosts
SSL证书配置
使用Let’s Encrypt:
sudo apt install certbot -y sudo certbot certonly --standalone -d mail.yourdomain.com
配置Postfix使用证书 (/etc/postfix/main.cf
):
smtpd_tls_cert_file=/etc/letsencrypt/live/mail.yourdomain.com/fullchain.pem smtpd_tls_key_file=/etc/letsencrypt/live/mail.yourdomain.com/privkey.pem
反垃圾与防病毒
sudo apt install spamassassin clamav clamav-daemon -y sudo freshclam # 更新病毒库 sudo systemctl enable spamassassin
在Postfix中启用过滤 (/etc/postfix/master.cf
):
smtp inet n - y - - smtpd -o content_filter=spamassassin
测试与验证
发送测试邮件
echo "Test mail" | mail -s "Server Test" user@yourdomain.com
检查日志
tail -f /var/log/mail.log # 实时监控邮件日志
安全加固措施
- DKIM签名:安装opendkim防止邮件被标记为垃圾
- 定期更新:设置无人值守更新
sudo apt install unattended-upgrades
- Fail2ban防护:阻止暴力破解
sudo apt install fail2ban cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
维护命令
- 查看邮件队列:
postqueue -p
- 重载配置:
sudo systemctl reload postfix dovecot
- 测试Dovecot:
telnet localhost 143
(输入a LOGIN user@domain password
)
技术引用说明:
- Postfix官方文档:http://www.postfix.org/documentation.html
- Dovecot配置指南:https://doc.dovecot.org
- Let’s Encrypt证书管理:https://certbot.eff.org
- 垃圾邮件防护基准:SpamAssassin Apache项目
配置需与实际网络环境结合,生产环境建议部署备份方案,域名解析(MX记录、SPF、DMARC)是邮件可达性关键,未包含在本文操作范围内。
原创文章,发布者:酷盾叔,转转请注明出处:https://www.kd.cn/ask/22739.html