设置电子邮件服务(SMTP、Imap 和 Imaps)并限制对 SMTP 的访问 - 第 7 部分
LFCE(Linux 基金会认证工程师)是经过培训的专业人员,拥有在 Linux 系统中安装、管理和排除网络服务故障的技能,并负责系统架构和用户管理的设计、实施和持续维护。
介绍 Linux 基金会认证计划。
在之前的教程中,我们讨论了如何安装邮件服务的必要组件。如果您尚未安装 Postfix 和 Dovecot,请在继续之前参阅本系列的第 1 部分以获取相关说明。
要求
- 安装 Postfix 邮件服务器和 Dovecot – 第 1 部分
在这篇文章中,我将向您展示如何配置邮件服务器以及如何执行以下任务:
- 配置电子邮件别名
- 配置 IMAP 和 IMAPS 服务
- 配置smtp服务
- 限制对 smtp 服务器的访问
注意:我们的设置仅涵盖计算机属于同一域的局域网的邮件服务器。向其他域发送电子邮件需要更复杂的设置,包括域名解析功能,这超出了 LFCE 认证的范围。
但首先,让我们从一些定义开始。
邮件发送、传输和投递过程的组成部分
下图展示了从发件人开始直到邮件到达收件人收件箱的电子邮件传输过程:
为了实现这一点,幕后发生了几件事。为了将电子邮件从客户端应用程序(例如 Thunderbird、Outlook 或网络邮件服务,例如 Gmail 或 Yahoo! Mail)传送到他/她的邮件服务器,并从那里传送到目标服务器,最后传送到其预期收件人,每个服务器中必须有 SMTP(简单邮件传输协议)服务。
在谈论电子邮件服务时,您会发现经常提到以下术语:
消息传输代理 – MTA
MTA(Mail 或 Message Transport Agent 的缩写),又名邮件中继,是一种负责从服务器传输电子邮件的软件给客户(反之亦然)。在本系列中,Postfix 充当我们的 MTA。
邮件用户代理 – MUA
MUA,或邮件用户代理,是一种用于访问和管理用户电子邮件收件箱的计算机程序。 MUA 的示例包括但不限于 Thunderbird、Outlook 以及 Gmail、Outlook.com 等网络邮件界面。在本系列中,我们将在示例中使用 Thunderbird。
邮件递送代理
MDA(消息或邮件传送代理的缩写)是实际将电子邮件传送到用户收件箱的软件部分。在本教程中,我们将使用 Dovecot 作为我们的 MDA。 Dovecot 还将处理用户身份验证。
简单邮件传输协议 – SMTP
为了使这些组件能够彼此“交谈”,它们必须“说”相同的“语言”(或协议) ),即 RFC 2821 中定义的 SMTP(简单邮件传输协议)。很可能,您在设置邮件服务器环境时必须参考该 RFC。
我们需要考虑的其他协议是 IMAP4(Internet 消息访问协议),它允许直接在服务器上管理电子邮件,而无需将其下载到客户端的硬盘上和POP3(邮局协议),它允许将邮件和文件夹下载到用户的计算机。
我们的测试环境
我们的测试环境如下:
邮件服务器设置
Mail Server OS : Debian Wheezy 7.5
IP Address : 192.168.0.15
Local Domain : example.com.ar
User Aliases : [email is aliased to [email and [email
客户端机器设置
Mail Client OS : Ubuntu 12.04
IP Address : 192.168.0.103
在我们的客户端上,我们设置了基本 DNS 解析,将以下行添加到 /etc/hosts 文件中。
192.168.0.15 example.com.ar mailserver
添加电子邮件别名
默认情况下,发送给特定用户的消息应仅传递给该用户。但是,如果您还想将其传递给一组用户或不同的用户,您可以创建邮件别名或使用 /etc/postfix/aliases 中的现有别名之一,遵循以下语法:
user1: user1, user2
因此,发送给 user1 的电子邮件也将传递给 user2。请注意,如果您省略冒号后的单词 user1,如
user1: user2
发送给user1的消息只会发送给user2,而不会发送给user1。
在上面的示例中,user1 和 user2 应该已存在于系统中。如果您在添加新用户之前需要回顾一下,您可能需要参考 LFCS 系列的第 8 部分。
- 如何在 Linux 中添加和管理用户/组
- 在 Linux 中添加用户的 15 个命令
在我们的具体情况下,我们将使用之前解释的以下别名(在 /etc/aliases 中添加以下行)。
sysadmin: gacanepa, jdoe
并运行以下命令来创建或刷新别名查找表。
postalias /etc/postfix/aliases
这样,发送到[email 的邮件将被发送到上面列出的用户的收件箱。
配置 Postfix – SMTP 服务
Postfix 的主要配置文件是 /etc/postfix/main.cf。您只需设置一些参数即可使用邮件服务。但是,您应该熟悉完整的配置参数(可以使用 man 5 postconf 列出),以便设置安全且完全自定义的邮件服务器。
注意:本教程只是为了帮助您开始该过程,并不代表有关 Linux 电子邮件服务的全面指南。
使用您选择的编辑器打开 /etc/postfix/main.cf 文件,并按照说明进行以下更改。
vi /etc/postfix/main.cf
1。 myorigin 指定出现在从服务器发送的消息中的域。您可能会看到与此参数一起使用的 /etc/mailname 文件。如果需要,请随意编辑。
myorigin = /etc/mailname
如果使用上述值,邮件将以[受保护的电子邮件]形式发送,其中 user 是发送邮件的用户。
2。 mydestination 列出了该计算机将在本地传送电子邮件的域,而不是转发到另一台计算机(充当中继系统)。对于我们的情况,默认设置就足够了(请确保编辑文件以适合您的环境)。
其中 /etc/postfix/transport 文件定义域与邮件消息应转发到的下一个服务器之间的关系。在我们的例子中,由于我们将仅将消息传递到局域网(从而绕过任何外部 DNS 解析),因此以下配置就足够了。
example.com.ar local:
.example.com.ar local:
接下来,我们需要将此纯文本文件转换为 .db 格式,这会创建 Postfix 实际使用的查找表来了解如何处理传入和传出的邮件。
postmap /etc/postfix/transport
如果您向相应的文本文件添加更多条目,您将需要记住重新创建该表。
3。 mynetworks 定义 Postfix 将转发消息的授权网络。默认值“子网”告诉 Postfix 仅转发来自与本地计算机位于同一 IP 子网中的 SMTP 客户端的邮件。
mynetworks = subnet
4。 relay_domains 指定电子邮件应发送到的目的地。我们将保留默认值不变,它指向 mydestination。请记住,我们正在为 LAN 设置邮件服务器。
relay_domains = $mydestination
请注意,您可以使用 $mydestination 而不是列出实际内容。
5。 inet_interfaces 定义邮件服务应侦听哪些网络接口。默认值 all 告诉 Postfix 使用所有网络接口。
inet_interfaces = all
6。最后,mailbox_size_limit和message_size_limit将分别用于设置每个用户邮箱的大小和单个消息允许的最大大小(以字节为单位)。
mailbox_size_limit = 51200000
message_size_limit = 5120000
限制对 SMTP 服务器的访问
Postfix SMTP 服务器可以对每个客户端连接请求应用某些限制。并非所有客户端都应该被允许使用 smtp HELO 命令向邮件服务器表明自己的身份,当然也不是所有客户端都应该被授予发送或接收消息的访问权限。
为了实现这些限制,我们将在 main.cf 文件中使用以下指令。尽管它们是不言自明的,但出于澄清目的添加了注释。
Require that a remote SMTP client introduces itself with the HELO or EHLO command before sending the MAIL command or other commands that require EHLO negotiation.
smtpd_helo_required = yes
Permit the request when the client IP address matches any network or network address listed in $mynetworks
Reject the request when the client HELO and EHLO command has a bad hostname syntax
smtpd_helo_restrictions = permit_mynetworks, reject_invalid_helo_hostname
Reject the request when Postfix does not represent the final destination for the sender address
smtpd_sender_restrictions = permit_mynetworks, reject_unknown_sender_domain
Reject the request unless 1) Postfix is acting as mail forwarder or 2) is the final destination
smtpd_recipient_restrictions = permit_mynetworks, reject_unauth_destination
为了进一步探索可用选项,Postfix 配置参数 postconf 页面可能会派上用场。
配置鸽舍
安装 dovecot 后,它立即支持 POP3 和 IMAP 协议及其安全版本、POP3S 和分别为 IMAPS。
在 /etc/dovecot/conf.d/10-mail.conf 文件中添加以下行。
%u represents the user account that logs in
Mailboxes are in mbox format
mail_location = mbox:~/mail:INBOX=/var/mail/%u
Directory owned by the mail group and the directory set to group-writable (mode=0770, group=mail)
You may need to change this setting if postfix is running a different user / group on your system
mail_privileged_group = mail
如果您检查主目录,您会注意到有一个包含以下内容的邮件子目录。
另请注意,/var/mail/%u 文件是大多数系统上存储用户邮件的位置。
将以下指令添加到 /etc/dovecot/dovecot.conf(请注意,imap 和 pop3 也意味着 imaps 和 pop3s)。
protocols = imap pop3
并确保 /etc/conf.d/10-ssl.conf 包含以下行(否则,添加它们)。
ssl_cert = </etc/dovecot/dovecot.pem
ssl_key = </etc/dovecot/private/dovecot.pem
现在让我们重新启动 Dovecot 并验证它是否侦听与 imap、imaps、pop3 和 pop3s 相关的端口。
netstat -npltu | grep dovecot
设置邮件客户端并发送/接收邮件
在我们的客户端计算机上,我们将打开Thunderbird并单击文件→新建→现有邮件帐户。系统将提示我们输入帐户名称和关联的电子邮件地址及其密码。当我们单击继续时,Thunderbird 将尝试连接到邮件服务器以验证设置。
对下一个帐户([受保护的电子邮件])重复上述过程,以下两个收件箱应出现在 Thunderbird 的左侧窗格中。
在我们的服务器上,我们将向 sysadmin 写入一封电子邮件,该电子邮件的别名为 jdoe 和 gacanepa。
邮件日志 (/var/log/mail.log) 似乎表明发送到 sysadmin 的电子邮件已转发到 [email 和[电子邮件受保护],如下图所示。
我们可以验证邮件是否确实已发送到我们的客户端,其中 IMAP 帐户是在 Thunderbird 中配置的。
最后,我们尝试从 [email 向 [email 发送消息。
在考试中,您将被要求专门使用命令行实用程序。这意味着您将无法安装桌面客户端应用程序,例如 Thunderbird,但需要使用邮件。我们在本章中使用 Thunderbird 仅用于说明目的。
结论
在这篇文章中,我们解释了如何为局域网设置 IMAP 邮件服务器以及如何限制对 SMTP 服务器的访问。如果您在测试环境中实现类似设置时碰巧遇到问题,您将需要检查 Postfix 和 Dovecot 的在线文档(特别是有关主配置文件 /etc/postfix/main.cf 和/etc/dovecot/dovecot.conf,分别),但无论如何,请随时使用下面的评论表与我联系。我非常乐意为您提供帮助。