介绍
Postfix是一个流行的开源邮件传输代理(MTA),可以用于在Linux系统上路由和发送电子邮件,据估计,互联网上大约25%的公共邮件服务器运行Postfix。
在本指南中,我们将教你如何在Ubuntu 18.04服务器上快速起床和运行Postfix。
前提条件
要遵循本指南,您应该可以访问具有sudo
特权的非根用户,您可以遵循我们的 Ubuntu 18.04初始服务器设置指南来创建必要的用户。
为了正确配置 Postfix,您需要一个完全合格的域名指向您的 Ubuntu 18.04 服务器. 您可以通过遵循 此指南来找到帮助设置您的域名与 DigitalOcean. 如果您打算接受邮件,您需要确保您有一个 MX 记录指向您的邮件服务器。
对于本教程的目的,我们将假设您正在配置一个具有mail.example.com
的FQDN的主机。
步骤 1 - 安装 Postfix
Postfix 包含在 Ubuntu 的默认存储库中,因此安装很简单。
首先,更新您的本地apt
包缓存,然后安装软件. 我们将将DEBIAN_PRIORITY=low
环境变量传入我们的安装命令,以便回答一些额外的提示:
1sudo apt update
2sudo DEBIAN_PRIORITY=low apt install postfix
使用以下信息来正确填写您的提示,适用于您的环境:
- ** 邮件配置的一般类型? ** : 为此,我们将选择** 互联网网站** ,因为这符合我们的基础设施需求。 这是仅给出地址的账户部分时用于构建有效电子邮件地址的基础域. 例如,我们的服务器的主机名是
mail.example.com',但我们可能想要将系统邮件名设置为
example.com',这样,鉴于用户名user1',Postfix将使用地址
[email protected]'. *** Root和邮政总收信人** : 这是Linux帐户,将发送邮件给root'和
postmaster'。 用你的主要账户来做这个 就我们而言,** Sammy** . *** 接受邮件的其他目的地** : 这定义了此 Postfix 实例将接受的邮件目的地 。 如果您需要添加此服务器将负责接收的任何其他域, 请添加这些域, 否则, 默认值应该效果良好 。 - ** 邮件队列中的同步更新 ? ** : 由于您可能使用有日记的文件系统, 请接受 本地网络** : 这是您所配置的邮件服务器用于转发信件的网络列表 。 默认应适用于大多数情况。 如果您选择修改, 请确保对于网络范围有非常严格的限制 。
- ** Mailbox 大小限制 ** : 这可以用来限制消息的大小. 设置为"0"可禁用任何大小限制.
- ** 本地地址扩展字符** : 此字符可用于将地址的正则部分与扩展部分相分离(用于创建动态化名).
- ** 要使用的互联网协议** :选择是否限制Postfix支持的IP版本. 我们来挑"所有"来做我们的目的。
要明确的是,以下是我们将为本指南使用的设置:
- 一般的邮件配置类型? :互联网网站
- 系统邮件名称 : example.com (不是 mail.example.com)
- 根和邮件主管邮件收件人 : sammy
- 其他目的地接受邮件 : $myhostname, example.com, mail.example.com, localhost.example.com, localhost
- 强制同步更新邮件队列? : No
- 本地网络 : 127.0.0.0/8 [ffffffff:127.0.0.0.0]/104 [::1]/128
- 邮箱大小限制 : 0
- **本地地址扩展字符
如果您需要返回重新调整这些设置,您可以通过键入这样做:
1sudo dpkg-reconfigure postfix
提示将与您之前的响应预先填充。
当你完成时,我们现在可以做更多的配置来设置我们的系统,就像我们想要的。
步骤 2 — Tweak Postfix 配置
接下来,我们可以调整一些包未提示我们的设置。
首先,我们可以设置邮箱. 我们将使用 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'
步骤 3 — 地图邮件地址到 Linux 帐户
接下来,我们可以设置虚拟地图文件. 在文本编辑器中打开文件:
1sudo nano /etc/postfix/virtual
虚拟代码地图表使用一个非常简单的格式. 在左侧,你可以列出任何你想接受电子邮件的地址。
例如,如果您想接受[email protected]
和[email protected]
的电子邮件,并希望这些电子邮件发送给sammy
Linux 用户,您可以这样设置您的文件:
1[label /etc/postfix/virtual]
2[email protected] sammy
3[email protected] sammy
将所有地址转到相应的服务器帐户后,保存并关闭文件。
我们可以通过键入应用地图:
1sudo postmap /etc/postfix/virtual
重新启动 Postfix 流程,以确保所有更改都已应用:
1sudo systemctl restart postfix
第4步:调整防火墙
如果您正在运行 UFW 防火墙,如初始服务器设置指南所配置,我们将不得不允许 Postfix 的例外。
您可以通过键入允许连接到服务:
1sudo ufw allow Postfix
Postfix 服务器组件已安装并准备好,接下来,我们将设置一个可以处理 Postfix 将处理的邮件的客户端。
步骤 5 — 设置环境以匹配邮件位置
在我们安装客户端之前,我们应该确保我们的邮件
环境变量设置正确。
为了使变量设置,无论您如何访问您的帐户(通过ssh
,su
,su -
,sudo
,等等),我们需要将变量设置在几个不同的位置。
要将变量添加到这些文件中,键入:
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
步骤 6 – 安装和配置邮件客户端
为了与发送的邮件进行交互,我们将安装s-nail
包,这是一个BSDxmail
客户端的变体,它具有丰富的功能,可以正确处理Maildir格式,并且大多是向后兼容的。
要安装s-nail
包,键入:
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
它还会将Maildir
目录设置为内部文件夹
变量,然后使用此来创建一个发送
mbox文件,用于存储发送邮件。
保存并关闭文件,当你完成。
步骤 7 – 初始化 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:
看来我们的邮件已经交付了。
与客户端管理邮件
使用客户端来检查您的邮件:
1s-nail
你应该看到你的新消息等待:
1[secondary_label Output]
2s-nail version v14.8.6. Type ? for help.
3"/home/sammy/Maildir": 1 message 1 new
4>N 1 [email protected] Wed Dec 31 19:00 14/369 init
只需点击ENTER
即可显示您的消息:
1[secondary_label Output]
2[-- Message 1 -- 14 lines, 369 bytes --]:
3From [email protected] Wed Dec 31 19:00:00 1969
4Date: Fri, 13 May 2016 18:07:49 -0400
5To: [email protected]
6Subject: init
7Message-Id: <[email protected]>
8From: [email protected]
9
10init
您可以通过键入h
返回消息列表,然后键入ENTER
:
1h
1[secondary_label Output]
2s-nail version v14.8.6. Type ? for help.
3"/home/sammy/Maildir": 1 message 1 new
4>R 1 [email protected] Wed Dec 31 19:00 14/369 init
由于这个消息不太有用,我们可以用d
删除它,然后用ENTER
删除它:
1d
停止返回终端,键入q
,然后ENTER
:
1q
向客户发送邮件
您可以通过在文本编辑器中键入消息来测试发送邮件:
1nano ~/test_message
内部,输入您想发送电子邮件的文本:
1[label ~/test_message]
2Hello,
3
4This is a test. Please confirm receipt!
使用cat
命令,我们可以将消息引导到s-nail
进程中,这将作为您的Linux用户的默认方式发送消息,您可以用-r
旗调节From
字段,如果您想将该值更改为其他东西:
1cat ~/test_message | s-nail -s 'Test email subject line' -r from_field_account [email protected]
上面的选项是:
-s
:电子邮件-r
的主题行: 可选更改电子邮件的从
字段. 默认情况下,您已登录的Linux用户将被用来填写此字段。-r
选项允许您将此更改。[email protected]
: 将电子邮件发送给的帐户. 将此更改为您可以访问的有效帐户。
您可以在您的s-nail
客户端中查看发送的消息. 通过键入重新启动互动客户端:
1s-nail
接下来,通过键入查看您发送的消息:
1file +sent
您可以使用相同的命令来管理发送邮件。
结论
你现在应该在 Ubuntu 18.04 服务器上配置 Postfix. 管理电子邮件服务器对于初创管理员来说可能是一个艰难的任务,但有了这个配置,你应该有基本的 MTA 电子邮件功能来帮助你开始。