在ubuntu使用Postfix搭建邮件服务器
在 Ubuntu 服务器上搭建邮件服务器的教程。 Postfix 作为邮件传输代理 (MTA),Dovecot 作为邮件投递代理 (MDA)
目标:
- 在 Ubuntu 服务器上搭建一个功能完善的邮件服务器。
- 支持发送和接收邮件。
- 实现基本的安全措施,防止垃圾邮件和未经授权的访问。
准备工作:
- 一台运行 Ubuntu Server 的服务器。 推荐使用 Ubuntu 20.04 或更高版本。
- 具有
sudo
权限的非 root 用户。 - 一个域名。 你需要一个注册的域名,以便设置邮件服务器的 DNS 记录。
- 一个静态 IP 地址。 你的服务器需要一个静态 IP 地址,以便 DNS 记录可以正确解析到你的服务器。
- 确保服务器主机名设置正确。 使用
hostnamectl
命令设置主机名。主机名应该与你的域名或子域名相关。例如,mail.example.com
。
步骤 1:安装 Postfix
Postfix 是一个流行的、安全的、易于配置的邮件传输代理 (MTA)。
1 | sudo apt update |
在安装过程中,会弹出一个配置窗口。选择 “Internet Site” 并输入你的域名(例如,example.com
)。
步骤 2:配置 Postfix
编辑 Postfix 的主配置文件 main.cf
:
1 | sudo nano /etc/postfix/main.cf |
进行以下修改:
-
myhostname
: 设置服务器的主机名。1
myhostname = mail.example.com
-
myorigin
: 设置发送邮件时使用的域名。1
myorigin = example.com
-
mydestination
: 设置服务器接收邮件的域名。1
mydestination = mail.example.com, example.com, localhost.localdomain, localhost
-
mynetworks
: 设置允许通过此服务器发送邮件的网络。1
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
-
relayhost
: 如果你需要通过另一个邮件服务器发送邮件,请设置此选项。 否则,注释掉或留空。1
#relayhost =
-
inet_interfaces
: 设置 Postfix 监听的网络接口。1
inet_interfaces = all
-
inet_protocols
: 设置 Postfix 使用的网络协议。1
inet_protocols = all
保存并关闭文件。
步骤 3:安装 Dovecot
Dovecot 是一个流行的、安全的邮件投递代理 (MDA)。 它负责将邮件投递到用户的邮箱。
1 | sudo apt install dovecot-core dovecot-imapd dovecot-pop3d |
步骤 4:配置 Dovecot
配置 Dovecot 以使用 Postfix 进行邮件投递。
1 | sudo nano /etc/dovecot/dovecot.conf |
取消注释以下行:
1 | !include conf.d/10-mail.conf |
保存并关闭文件。
编辑 10-mail.conf
:
1 | sudo nano /etc/dovecot/conf.d/10-mail.conf |
设置 mail_location
选项:
1 | mail_location = mbox:~/mail:INBOX=/var/mail/%u |
保存并关闭文件。
编辑 10-auth.conf
:
1 | sudo nano /etc/dovecot/conf.d/10-auth.conf |
取消注释 disable_plaintext_auth
选项并将其设置为 no
。(注意:在生产环境中,强烈建议启用 TLS/SSL 加密,并保持 disable_plaintext_auth = yes
以提高安全性。)
1 | disable_plaintext_auth = no |
找到 auth_mechanisms
行,并确保它包含 plain
和 login
:
1 | auth_mechanisms = plain login |
保存并关闭文件。
编辑 10-master.conf
:
1 | sudo nano /etc/dovecot/conf.d/10-master.conf |
找到 service auth
部分,并确保 unix_listener /var/spool/postfix/private/auth
行存在且未注释:
1 | service auth { |
找到 service imap-login
和 service pop3-login
部分,确保 inet_listener
选项存在且未注释。
保存并关闭文件。
步骤 5:配置 Postfix 以使用 Dovecot 进行身份验证
编辑 Postfix 的 main.cf
文件:
1 | sudo nano /etc/postfix/main.cf |
添加以下行:
1 | smtpd_sasl_type = dovecot |
保存并关闭文件。
步骤 6:设置 DNS 记录
你需要设置以下 DNS 记录,以便邮件服务器可以正常工作:
-
A 记录: 将你的域名或子域名(例如,
mail.example.com
)指向你的服务器的静态 IP 地址。 -
MX 记录: 指示邮件服务器的域名。 将 MX 记录指向你的域名或子域名(例如,
mail.example.com
)。 -
TXT 记录 (SPF): SPF 记录用于防止垃圾邮件。 添加一个 TXT 记录,指定允许从你的域名发送邮件的服务器。 例如:
1
v=spf1 mx a ip4:你的服务器IP地址 -all
-
TXT 记录 (DMARC): DMARC 记录用于进一步提高邮件安全性。 添加一个 DMARC 记录,指示如何处理未通过 SPF 和 DKIM 检查的邮件。 例如:
1
v=DMARC1; p=none; rua=mailto:postmaster@example.com;
注意:
rua=mailto:postmaster@example.com;
这部分是可选的,用于指定接收 DMARC 报告的邮箱。具体的 DNS 记录设置方法取决于你的域名注册商。
步骤 7:重新启动服务
重新启动 Postfix 和 Dovecot 服务以应用更改:
1 | sudo systemctl restart postfix |
步骤 8:测试邮件服务器
- 创建用户: 创建一个系统用户用于邮件测试
1 | sudo adduser testuser |
- 发送邮件: 使用
mail
命令发送邮件。
1 | echo "This is a test email." | mail -s "Test Email" testuser@example.com |
- 接收邮件: 使用
dovecot
提供的工具或者mutt
命令来接收邮件。 首先安装mutt
:
1 | sudo apt install mutt |
然后运行 mutt
:
1 | mutt -f /var/mail/testuser |
你应该能看到你发送的测试邮件。
步骤 9:安全加固 (重要!)
-
启用 TLS/SSL 加密: 使用 Let’s Encrypt 获取免费的 TLS/SSL 证书,并配置 Postfix 和 Dovecot 以使用加密连接。 这可以保护你的邮件在传输过程中不被窃听。
1
2sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d mail.example.com然后,编辑
main.cf
和10-ssl.conf
文件以配置 TLS/SSL 加密。 -
配置防火墙: 使用
ufw
防火墙,只允许必要的端口(例如,25, 143, 993, 587)通过。1
2
3
4
5sudo ufw allow 25
sudo ufw allow 143
sudo ufw allow 993
sudo ufw allow 587
sudo ufw enable -
安装和配置 Fail2ban: Fail2ban 可以自动阻止尝试暴力破解你的服务器的 IP 地址。
1
2
3sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local编辑
jail.local
文件,启用对 Postfix 和 Dovecot 的保护。 -
定期更新系统: 保持你的 Ubuntu 服务器更新到最新版本,以修补安全漏洞。
步骤 10:防止垃圾邮件
- 设置反向 DNS (PTR) 记录: 确保你的服务器 IP 地址具有正确的反向 DNS 记录。 这可以帮助验证你的服务器是否是一个合法的邮件服务器。 联系你的服务器提供商设置 PTR 记录。
- 使用 DKIM: DKIM(DomainKeys Identified Mail)是一种电子邮件身份验证方法,允许你的邮件服务器对发出的邮件进行数字签名。
- 使用 DMARC: DMARC(Domain-based Message Authentication, Reporting & Conformance)是一种电子邮件身份验证策略,允许你指定如何处理未通过 SPF 和 DKIM 检查的邮件。
注意事项:
- 安全性: 设置邮件服务器需要非常重视安全性。 请务必采取所有必要的安全措施,以防止垃圾邮件、网络钓鱼和其他恶意活动。
- 可送达性: 确保你的邮件服务器符合电子邮件发送的最佳实践,以提高邮件的可送达性。 这包括设置正确的 DNS 记录、使用 DKIM 和 DMARC,以及避免发送垃圾邮件。
- 监控: 持续监控你的邮件服务器的性能和安全状况。 检查日志文件,以便及时发现和解决任何问题。
- **IP信誉:**保持IP信誉良好对于邮件的成功发送至关重要,务必遵守发送规则和避免发送垃圾邮件,否则你的邮件可能被标记为垃圾邮件。
客户端使用
在本地测试邮件服务器的可用性,是指在你的邮件服务器搭建好后,在不涉及到外部网络的情况下,验证它是否能够正确地发送和接收邮件。 这通常在你服务器搭建的初期阶段进行,用于排查基本配置问题。
以下是几种在本地测试邮件服务器可用性的方法:
方法 1:使用 mail
命令(简单快速)
mail
命令是一个简单的命令行邮件客户端,适用于快速测试。
-
确保
mail
命令已安装:1
2sudo apt update
sudo apt install mailutils -
发送邮件到本地用户:
假设你的系统上有一个用户名为testuser
,并且邮件服务器配置了域名example.com
,你可以尝试向testuser@example.com
发送邮件。1
echo "This is a test email." | mail -s "Test Email" testuser@example.com
-
检查本地用户的邮箱:
本地用户的邮箱通常位于
/var/mail/<用户名>
。 使用mutt
或者直接查看文件内容:-
使用
mutt
:1
2sudo apt install mutt # 如果没有安装
mutt -f /var/mail/testuser -
直接查看文件:
1
sudo cat /var/mail/testuser
如果邮件服务器配置正确,你应该能在
testuser
的邮箱中看到你发送的测试邮件。 -
方法 2:使用 swaks
命令(更详细的测试)
swaks
(Swiss Army Knife for SMTP) 是一个更强大的命令行 SMTP 测试工具。 它可以让你更详细地控制邮件发送过程,并检查服务器的响应。
-
安装
swaks
:1
2sudo apt update
sudo apt install swaks -
发送邮件并检查响应:
使用
swaks
命令发送邮件,并检查服务器的响应:1
swaks --to testuser@example.com --from youruser@example.com --server localhost --header "Subject: Test Email from Swaks" --body "This is a test email from swaks." --verbose
--to
:收件人地址。--from
:发件人地址(必须是邮件服务器允许发送的地址)。--server
:邮件服务器地址 (localhost 表示本地服务器)。--header
:邮件头部信息 (例如,主题)。--body
:邮件正文。--verbose
:显示详细的发送过程和服务器响应。
检查
swaks
的输出,确保服务器返回了 “250 OK” 或类似的成功代码。 如果出现错误,可以根据错误信息排查问题。
方法 3:使用本地邮件客户端(例如 Thunderbird)
如果你的系统上安装了图形界面的邮件客户端 (例如 Thunderbird),你可以配置它来连接到本地邮件服务器,并发送和接收邮件。
-
配置邮件客户端:
- 账户类型: 手动配置账户。
- 收件服务器 (IMAP/POP3):
- 服务器地址:
localhost
或127.0.0.1
- 端口:143 (IMAP) 或 110 (POP3) - 如果启用了 SSL/TLS,则使用 993 (IMAPS) 或 995 (POP3S)
- 安全连接:根据你的服务器配置选择 “STARTTLS” 或 “SSL/TLS”。 如果你没有启用 TLS/SSL,则选择 “无加密”。
- 身份验证方法:选择 “普通密码” 或 “加密密码”。
- 服务器地址:
- 发件服务器 (SMTP):
- 服务器地址:
localhost
或127.0.0.1
- 端口:25 或 587 (如果使用 STARTTLS) - 如果启用了 SSL/TLS,则使用 465 (SMTPS)
- 安全连接:根据你的服务器配置选择 “STARTTLS” 或 “SSL/TLS”。 如果你没有启用 TLS/SSL,则选择 “无加密”。
- 身份验证方法:选择 “普通密码” 或 “加密密码”。
- 用户名:必须设置为可用的用户,设置需要发送账号和用户密码
- 服务器地址:
-
发送和接收邮件:
使用邮件客户端发送邮件到本地用户(例如,testuser@example.com
),并检查是否能够成功接收。
方法 4:检查邮件日志
无论使用哪种方法测试,都应该检查邮件服务器的日志文件,以了解邮件的发送和接收情况。
- Postfix 日志:
/var/log/mail.log
或/var/log/maillog
- Dovecot 日志:
/var/log/dovecot.log
可视化注册与使用方案
在 Ubuntu 服务器上搭建邮件服务器后,并不能直接“图形化注册邮箱”。 上述教程搭建的是邮件服务器的底层基础,需要手动创建 Linux 系统用户,这些用户才能通过 IMAP/POP3 等协议访问邮件。 如果你想要提供一种“图形化注册邮箱”的体验,你需要额外的软件来管理邮箱账户,并提供一个 Web 界面供用户注册和管理他们的邮箱。
以下是一些可行的方案,它们都需要安装额外的软件,并进行配置。
方案 1:使用 iRedMail (推荐)
iRedMail 是一个非常流行的、开源的邮件服务器解决方案,它提供了一个 Web 界面,用于管理邮箱、用户和域名。 iRedMail 可以自动化配置 Postfix、Dovecot、Roundcube Webmail 等组件,并提供了一个易于使用的管理界面。
-
下载 iRedMail 安装脚本:
访问 https://www.iredmail.org/ 下载最新的 iRedMail 安装脚本。 -
运行安装脚本:
1
2
3tar xzf iRedMail-x.y.z.tar.gz # 解压下载的压缩包
cd iRedMail-x.y.z
sudo bash iRedMail.sh按照安装脚本的提示进行操作。 你需要设置管理员密码、选择数据库类型、设置域名等。
-
访问 iRedMail Web 管理界面:
安装完成后,访问 iRedMail Web 管理界面。 界面地址通常是https://你的服务器IP地址/iredadmin/
或https://你的域名/iredadmin/
。 -
使用 Web 界面创建邮箱账户:
使用管理员账户登录 iRedMail Web 管理界面,然后你可以创建新的邮箱账户,设置密码等。 -
让用户访问Web邮箱
iRedMail 集成了 Roundcube Webmail。 用户可以使用浏览器访问他们的邮箱,地址通常是
https://你的服务器IP地址/mail/
或https://你的域名/mail/
。
方案 2:使用 Mail-in-a-Box
Mail-in-a-Box 是另一个易于使用的邮件服务器解决方案,旨在简化邮件服务器的设置和管理。 它也提供了一个 Web 界面,用于管理邮箱、用户和域名。
-
下载 Mail-in-a-Box 安装脚本:
访问 https://mailinabox.email/ 获取最新的安装说明。 -
运行安装脚本:
按照 Mail-in-a-Box 的安装说明进行操作。 安装过程相对简单,会自动配置所需的组件。 -
访问 Mail-in-a-Box Web 管理界面:
安装完成后,访问 Mail-in-a-Box Web 管理界面。 -
使用 Web 界面创建邮箱账户:
使用管理员账户登录 Mail-in-a-Box Web 管理界面,然后你可以创建新的邮箱账户。
方案 3:手动配置 Roundcube Webmail 或 Rainloop (更复杂)
如果你不想使用完整的邮件服务器解决方案,你可以手动安装和配置 Roundcube Webmail 或 Rainloop Webmail,并将其与你的 Postfix 和 Dovecot 邮件服务器集成。
-
安装 Web 服务器:
首先,你需要安装一个 Web 服务器(例如,Apache 或 Nginx)。 -
安装 PHP:
你需要安装 PHP 和一些必要的 PHP 扩展。 -
下载和安装 Roundcube Webmail 或 Rainloop:
从官方网站下载 Roundcube Webmail 或 Rainloop 的最新版本,并将其解压到你的 Web 服务器的文档根目录中。 -
配置 Roundcube Webmail 或 Rainloop:
按照 Roundcube Webmail 或 Rainloop 的安装说明进行配置。 你需要设置数据库连接信息、IMAP 和 SMTP 服务器地址、身份验证方法等。 -
创建 Web 界面用于注册用户:
开发自己的Web界面,用于添加用户到数据库中。
方案对比
特性 | iRedMail | Mail-in-a-Box | 手动配置 Webmail |
---|---|---|---|
易用性 | 简单 | 简单 | 复杂 |
Web 管理界面 | 有 | 有 | 需要手动添加 |
自动配置 | 是 | 是 | 否 |
灵活性 | 较低 | 较低 | 高 |
社区支持 | 活跃 | 活跃 | 取决于选择的 Webmail |
适用场景 | 快速搭建邮件服务器 | 快速搭建邮件服务器 | 自定义程度高的场景 |
选择哪个方案?
-
iRedMail 或 Mail-in-a-Box: 如果你希望快速搭建一个功能完善的邮件服务器,并且不需要太多的自定义,那么 iRedMail 或 Mail-in-a-Box 是不错的选择。
-
手动配置Webmail: 如果你需要高度自定义, 那么选择这个方式。
总结:
要实现“图形化注册邮箱”的功能,你需要安装额外的软件,并提供一个 Web 界面供用户注册和管理他们的邮箱。 iRedMail 和 Mail-in-a-Box 是两种流行的选择,它们提供了易于使用的 Web 管理界面,可以简化邮件服务器的管理。 你也可以选择手动安装和配置 Roundcube Webmail 或 Rainloop Webmail,但这种方法更复杂。 请务必仔细阅读所选方案的文档,并按照说明进行操作。
日志诊断
- nginx
1 | sudo less /var/log/nginx/error.log |
1 | sudo tail -n 50 /var/log/mail.err |