如何在 Ubuntu 20.04 上安装和配置 Postfix

此教程的早期版本是由 Justin Ellingwood_

介绍

Postfix是一个流行的开源 Mail Transfer Agent(MTA)可以用于在Linux系统上路由和发送电子邮件。

在本指南中,您将学习如何在 Ubuntu 20.04 服务器上安装和配置 Postfix. 然后,您将测试 Postfix 是否能够通过安装 s-nail,一个 Mail User Agent (MUA),也被称为 email client

请注意,本教程的目标是帮助您快速实现邮件修复和运行,只有一些裸体的电子邮件功能. 您将没有完整的电子邮件服务器到本指南的末尾,但您将有一些基础组件的这样的设置,以帮助您开始。

前提条件

设置和维护自己的邮件服务器是复杂和耗时的。对于大多数用户来说,更实用的是依靠付费邮件服务。如果您正在考虑运行自己的邮件服务器,我们鼓励您审查(为什么您可能不想这样做)(https://andsky.com/tech/tutorials/why-you-may-not-want-to-run-your-own-mail-server)。

如果您确定要遵循此指南来安装和配置 Postfix,那么您必须首先具备以下内容:

  • 运行 Ubuntu 20.04 的服务器作为您的 Postfix 邮件服务器。 该服务器应该具有具有sudo特权的非根用户和与 UFW 配置的防火墙。 您可以遵循我们的 Ubuntu 20.04 初始服务器设置指南来设置此设置。
  • 一个完全合格的域名指向您的 Ubuntu 20.04 服务器。 您可以通过遵循 我们的域和 DNS 网络文档来帮助设置您的域名。

请注意,本教程假定您正在配置一个具有mail.example.com FQDN 的主机。

步骤 1 - 安装 Postfix

Postfix 包含在 Ubuntu 的默认存储库中,因此您可以使用 APT 安装它。

首先,更新您的本地apt包缓存:

1sudo apt update

然后使用以下命令安装postfix包. 请注意,在这里我们将DEBIAN_PRIORITY=low环境变量传入此安装命令。

1sudo DEBIAN_PRIORITY=low apt install postfix

此安装过程将打开一系列交互式提示,为本教程的目的,使用以下信息来填写您的提示:

  • ** 邮件配置的一般类型? ** : 为此,请选择** 互联网网站** ,因为这符合我们的基础设施需求。 ***** 系统邮件名称** : 这是仅给出地址的账户部分时用于构建有效电子邮件地址的基础域. 例如,让我们假设你的服务器的主机名是"mail.example.com". 您可能想要将系统邮件名设置为example.com',这样,鉴于用户名user1',Postfix将使用地址`[email protected]'.
  • ** Root and Postmaster邮件接收器** : 这是Linux帐户,将发送邮件给root'和postmaster'。 用你的主要账户来做这个 举例来说,** Sammy** . ***** 接受邮件的其他目的地** : 这定义了此 Postfix 实例将接受的邮件目的地 。 如果您需要添加此服务器负责接收的任何其他域, 请在此添加 。 否则, 默认将足够了 。
  • ** 邮件队列上的同步更新 ? ** : 由于您可能使用有日记的文件系统, 请接受 本地网络** : 这是您邮件服务器用于转发信件的网络列表 。 默认将适用于大多数情景。 如果您选择修改它, 请确保对于网络范围有非常严格的限制 。
  • ** Mailbox 大小限制 ** : 这可以用来限制消息的大小. 设置为 0 将禁用任何大小限制 。 ** 本地地址扩展字符 ** : 此字符可用于将地址的正则部分与扩展部分相分离(用于创建动态别名). 默认, \\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\ 为本课程目的,请选择 ** ** ** .

要明确的是,以下是本指南中使用的设置:

  • 一般的邮件配置类型? :互联网网站** 系统邮件名称*: example.com(不是 mail.example.com)
  • 根和邮件主管邮件收件人 :您的主要Linux帐户的用户名(在我们的例子中是** ) 其他接收邮件的目的地: $myhostname, example.com, mail.example.com, localhost.example.com, localhost
  • 强迫邮件的同步更新? : ** No**
  • 本地网络 : `127.0.0.0/8 [ff:::127.0.0.0.0/104]:: [1]/12

<$>[注] :如果您需要返回更改这些设置,您可以通过键入:

1sudo dpkg-reconfigure postfix

提示将预先填充到您之前的答案中。 <$>

当安装过程结束时,您准备对您的 Postfix 配置进行一些更新。

步骤 2 – 更改 Postfix 配置

现在你可以调整一些设置,而不是直接编辑这个文件,你可以使用Postfix的postconf命令来查询或设置配置设置。

在本指南中,我们将使用 Maildir格式,该格式将消息分为单个文件,然后根据用户行动在目录之间移动。

home_mailbox变量设置为Maildir/ 随后,您将在用户的家庭目录中创建该名称下的目录结构。

1sudo postconf -e 'home_mailbox= Maildir/'

接下来,设置virtual_alias_maps表的位置,该表将任意电子邮件帐户映射到Linux系统帐户中,运行以下命令,将表的位置映射到名为/etc/postfix/virtual的哈希数据库文件:

1sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'

现在你已经在你的 main.cf 文件中定义了虚拟地图文件的位置,你可以创建文件本身,并开始将电子邮件帐户绘制到你的 Linux 系统上的用户帐户。

1sudo nano /etc/postfix/virtual

列出您希望接受电子邮件的任何地址,随后列出白色空间和您希望发送该邮件的 Linux 用户。

例如,如果您想接受[email protected][email protected]的电子邮件,并希望这些电子邮件发送给 sammy Linux 用户,您可以这样设置您的文件:

1[label /etc/postfix/virtual]
2[email protected] sammy
3[email protected] sammy

将所有地址转移到相应的服务器帐户后,保存并关闭文件. 如果您使用了nano,请按CTRL + X,Y,然后按ENTER

通过键入应用地图:

1sudo postmap /etc/postfix/virtual

重新启动 Postfix 流程,以确保所有更改都已应用:

1sudo systemctl restart postfix

假设您遵循了 前提初始服务器设置指南,您将与 UFW 配置防火墙. 此防火墙将默认地阻止服务器上的外部连接,除非这些连接被明确允许,因此您将需要添加防火墙规则以允许Postfix的例外。

您可以通过键入允许连接到服务:

1sudo ufw allow Postfix

有了它,Postfix已配置并准备接受外部连接,但是,您还没有准备好用邮件客户端测试它。在您可以安装客户端并使用它与送到您的服务器的邮件进行交互之前,您需要对Ubuntu服务器的设置做出一些更改。

步骤 3 – 安装邮件客户端并初始化 Maildir 结构

为了与发送的邮件进行交互,此步骤将引导您通过安装s-nail包的过程,这是一个功能丰富的BSDxmail客户端的变体,可以正确处理Maildir格式。

然而,在安装客户端之前,应该谨慎地确保您的邮件环境变量设置正确。

要确保邮件变量设置,无论您如何访问您的帐户,例如通过ssh,su,su -sudo,您需要在/etc/bash.bashrc文件中设置变量,并将其添加到/etc/profile.d中的文件中,以确保其默认为所有用户设置。

要将变量添加到这些文件中,键入:

1echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh

要在当前会话中读取变量,请源 /etc/profile.d/mail.sh 文件:

1source /etc/profile.d/mail.sh

完成后,安装s-nail电子邮件客户端与APT:

1sudo apt install s-nail

在运行客户端之前,您需要调整几个设置。在您的编辑器中打开 /etc/s-nail.rc 文件:

1sudo nano /etc/s-nail.rc

在文件的底部,添加以下选项:

1[label /etc/s-nail.rc]
2. . .
3set emptystart
4set folder=Maildir
5set record=+sent

这里是这些线条做什么:

  • set emptystart: 允许客户端打开即使是空的 Inbox
  • set folder=Maildir: 将 Maildir 目录设置为内部 folder 变量
  • set record=+sent 创建一个 sent mbox 文件以存储发送邮件,无论目录设置为 folder 变量,在这种情况下 Maildir

保存并关闭文件,当你完成时,你现在已经准备好启动你的系统的Maildir结构。

在您的家庭目录中创建 Maildir 结构的一种快速方法是通过s-nail命令发送电子邮件给自己,因为发送文件仅在创建 Maildir 后才可用,所以您应该禁用为此初始电子邮件写字。

将电子邮件发送到s-nail命令,以便将您的 Linux 用户标记为收件人:

1echo 'init' | s-nail -s 'init' -Snorecord sammy

<$>[注] **注:您可以收到以下答案:

1[secondary_label Output]
2Can't canonicalize "/home/sammy/Maildir"

这是正常的,只能在发送这个第一个消息时出现。

您可以通过搜索您的 ~/Maildir 目录来检查是否创建了目录:

1ls -R ~/Maildir

您将看到目录结构已经创建,并且新消息文件位于~/Maildir/new目录中:

 1[secondary_label Output]
 2/home/sammy/Maildir/:
 3cur new tmp
 4
 5/home/sammy/Maildir/cur:
 6
 7/home/sammy/Maildir/new:
 81463177269.Vfd01I40e4dM691221.mail.example.com
 9
10/home/sammy/Maildir/tmp:

现在已创建目录结构,您已经准备好通过查看您发送的init消息并将消息发送到外部电子邮件地址来测试s-nail客户端。

步骤4:测试客户

要打开客户端,运行s-nail命令:

1s-nail

在您的控制台中,您将看到一个原始的收件箱,其中有init消息等待:

1[secondary_label Output]
2s-nail version v14.9.15. Type `?' for help
3"/home/sammy/Maildir": 1 message 1 new
4>N 1 [email protected] 2020-05-19 15:40 14/392 init

点击进入以显示消息:

 1[secondary_label Output]
 2[-- Message 1 -- 14 lines, 369 bytes --]:
 3From [email protected] Tue May 19 15:40:48 2020
 4Date: Tue, 19 May 2020 15:40:48 +0000
 5To: [email protected]
 6Subject: init
 7Message-Id: <[email protected]>
 8From: [email protected]
 9
10init

您可以通过键入h返回消息列表,然后键入ENTER:

1h
1[secondary_label Output]
2>R 1 [email protected] 2020-05-19 15:40 14/392 init

请注意,该消息现在具有R状态,表示已被阅读。

由于此消息不太有用,您可以通过按d来删除它,然后按ENTER:

1d

要返回终端,键入q,然后键入ENTER:

1q

作为最后的测试,检查s-nail是否能够正确发送电子邮件信息. 要做到这一点,您可以将文本文件的内容导入s-nail流程中,就像您在上一步发送的init消息一样。

首先,在文本编辑器中写一个测试消息:

1nano ~/test_message

在里面,输入您想要发送的文本:

1[label ~/test_message]
2Hello,
3
4This is a test. Please confirm receipt!

保存并关闭文件后写你的消息。

然后,使用cat命令将消息导向s-nail进程,您可以使用下面的示例,该示例使用这些选项:

  • -s:这定义了电子邮件 message
  • -r 的主题行: 选项更改到电子邮件的从:字段。 默认情况下,您已登录的 Linux 用户将被用来填充此字段。 -r 选项允许您将此地址替换为有效的地址,例如您在 /etc/postfix/virtual 文件中定义的地址。 为了说明,下面的命令使用 [email protected]

此外,请确保将[email protected]更改为您可以访问的有效电子邮件地址:

1cat ~/test_message | s-nail -s 'Test email subject line' -r [email protected] [email protected]

然后,导航到收件箱,找到您发送消息的电子邮件地址. 您将看到您的消息在那里等待几乎立即。

<$>[注] **注:如果消息不在您的收件箱中,它可能已被发送到您的垃圾邮件文件夹。

您可以在您的s-nail客户端中查看发送的消息. 重新启动互动客户端:

1s-nail

从电子邮件客户端,通过键入查看发送的消息:

1file +sent

你会看到这样的输出:

1[secondary_label Output]
2+[/home/sammy/Maildir/]sent: 1 message 1 new
3▸N 1 [email protected] 2020-05-19 15:47 12/297 Test email subject line

您可以使用相同的命令来管理发送邮件。

结论

管理电子邮件服务器对于新系统管理员来说可能是一个艰难的任务,但有了这个配置,你应该有足够的MTA电子邮件功能来开始。

Published At
Categories with 技术
comments powered by Disqus