介绍
Postfix是一种流行的开源邮件传输代理(MTA),可用于在Linux系统上路由和传递电子邮件。 据估计,大约25%的公共邮件服务器在互联网上运行Postfix。
在本指南中,我们将教你如何在Ubuntu 16.04服务器上快速启动和运行Postfix。
先决条件
为了跟随本指南,您应该获得一个非root用户sudo
权限。 您可以按照我们的Ubuntu 16.04服务器初始设置向导来创建必要的用户。
为了正确配置Postfix,您需要一个完全合格的域名指向您的Ubuntu 16.04服务器。 你可以找到按照设置您的域名和DigitalOcean帮助本指南 。
对于本教程的目的,我们将假定您要配置具有的FQDN主机mail.example.com
。
第1步:安装Postfix
Postfix包含在Ubuntu的默认存储库中,因此安装非常简单。
首先,更新本地apt
包缓存,然后安装软件。 我们将通过在DEBIAN_PRIORITY=low
环境变量进入我们的安装命令,以回答一些额外的提示:
sudo apt-get update
sudo DEBIAN_PRIORITY=low apt-get install postfix
使用以下信息为您的环境正确填写提示:
- 一般类型的邮件配置:?对于这一点,我们将选择互联网站点 ,因为这符合我们的基础设施需求。
- 系统邮件名称 :这是使用时只给出地址的帐户部分以构建一个有效的电子邮件地址的基本域。 例如,我们的服务器的主机名是
mail.example.com
,但我们可能要在系统邮件名称设置为example.com
,这样给用户名user1
,Stapling将使用的地址user1@example.com
。 - 根与主管邮件收件人 :这是Linux的帐户将被转发邮件给
root@
和postmaster@
。 请使用您的主帐户。 在我们的例子, sammy 。 - 其他目的地来接受邮件 :定义该邮件的目的地,这Postfix的实例将接受。 如果你需要添加任何其他域,这个服务器将负责接收,添加这里,否则,默认应该工作正常。
- 迫使邮件队列同步更新:既然你很可能使用的是日志文件系统, 不接受在这里。
- 本地网络 :这是你的邮件服务器被配置为邮件转发的网络的列表。 默认值适用于大多数情况。 如果您选择修改它,请确保对网络范围非常限制。
- 邮箱大小限制 :这可以被用来限制消息的大小。 将其设置为“0”将禁用任何大小限制。
- 本地地址扩展字符 :这是一个可以被用来在地址中的常规部分从分机(用于创建动态别名)分离的字符。
- 互联网协议使用方法 :选择是否限制postfix支持IP版本。 我们会选择“所有”为我们的目的。
为了明确,这些是我们将用于本指南的设置:
- 一般类型的邮件配置:互联网站点
- 系统邮件名称 :example.com(未mail.example.com)
- 根与主管邮件收件人 :sammy
- 其他目的地来接受邮件 :$ MYHOSTNAME,example.com,mail.example.com,localhost.example.com,本地主机
- 强制同步更新的邮件队列:无
- 本地网络 :127.0.0.0/8 [::ffff:127.0.0.0]/104 [:: 1] / 128
- 邮箱大小限制 :0
- 本地地址扩展字符 :+
- 互联网协议使用方法 :所有
如果您需要返回重新调整这些设置,您可以键入以下内容:
sudo dpkg-reconfigure postfix
提示将预先填充您之前的回复。
当你完成后,我们现在可以做一些配置来设置我们的系统我们想要它。
第2步:调整Postfix配置
接下来,我们可以调整一些软件包没有提示我们的设置。
首先,我们可以设置邮箱。 我们将使用Maildir的格式,它的信息分离成单独的文件,然后根据用户的操作目录之间移动。 另一种选择是MBOX格式(我们将不包括在这里),其存储在单个文件中的所有邮件。
我们将设置home_mailbox
变量Maildir/
这将在用户的主目录中创建这个名字的目录结构。 该postconf
命令可以用来查询或设置的配置设置。 配置home_mailbox
通过键入:
sudo postconf -e 'home_mailbox= Maildir/'
接着,我们可以设置的位置virtual_alias_maps
表。 此表将任意电子邮件帐户映射到Linux系统帐户。 我们将创建在该表中/etc/postfix/virtual
。 同样,我们可以使用postconf
命令:
sudo postconf -e 'virtual_alias_maps= hash:/etc/postfix/virtual'
第3步:将邮件地址映射到Linux帐户
接下来,我们可以设置虚拟地图文件。 在文本编辑器中打开文件:
sudo nano /etc/postfix/virtual
虚拟别名映射表使用非常简单的格式。 在左侧,您可以列出您希望接受电子邮件的任何地址。 然后,以空格分隔,输入您希望将该邮件传递给的Linux用户。
例如,如果您想在接受电子邮件contact@example.com
和admin@example.com
,并希望有交付给这些邮件sammy
Linux用户,你可以设置你的文件是这样的:
contact@example.com sammy
admin@example.com sammy
将所有地址映射到相应的服务器帐户后,保存并关闭该文件。
我们可以通过键入以下内容应用映射:
sudo postmap /etc/postfix/virtual
重新启动Postfix过程以确保我们的所有更改已应用:
sudo systemctl restart postfix
第4步:调整防火墙
如果您正在运行UFW防火墙,按照初始服务器设置指南中的配置,我们必须允许Postfix异常。
您可以键入以下命令来允许连接到服务:
sudo ufw allow Postfix
Postfix服务器组件已安装并准备就绪。 接下来,我们将设置一个客户端,可以处理Postfix将处理的邮件。
第5步:设置环境以匹配邮件位置
在我们安装一个客户端,我们要确保我们的MAIL
环境变量的设置是否正确。 客户端将检查此变量以确定在哪里查找用户的邮件。
为了使变量中,无论你如何访问您的帐户(通过设置ssh
, su
, su -
sudo
等),我们需要设置变量在几个不同的位置。 我们将它添加到/etc/bash.bashrc
并在文件/etc/profile.d
,以确保每个用户都配置此。
要将变量添加到这些文件,请键入:
echo 'export MAIL=~/Maildir' | sudo tee -a /etc/bash.bashrc | sudo tee -a /etc/profile.d/mail.sh
要读取的变量到当前会话中,可以源/etc/profile.d/mail.sh
文件:
source /etc/profile.d/mail.sh
第6步:安装和配置邮件客户端
在交付为了与邮件交互,我们将安装s-nail
包。 这是BSD的一个变种xmail
客户端,它可以处理的Maildir格式正确是功能丰富,而且大多是向后兼容。 GNU版本的mail
有一些令人沮丧的限制,如总储蓄读邮件至Mbox格式无论源格式。
若要安装s-nail
软件包,输入:
sudo apt-get install s-nail
我们应该调整几个设置。 打开/etc/s-nail.rc
在编辑器中的文件:
sudo nano /etc/s-nail.rc
在文件底部,添加以下选项:
. . .
set emptystart
set folder=Maildir
set record=+sent
这将允许客户端打开,即使有一个空的收件箱。 它还将设置Maildir
目录内folder
变量,然后用它来创建一个sent
内的MBOX文件,用于存储发送的邮件。
保存并在完成后关闭文件。
第7步:初始化Maildir并测试客户端
现在,我们可以测试客户端了。
初始化目录结构
在我们的主目录中创建Maildir结构的最简单的方法是向我们发送电子邮件。 我们可以用做mail
命令。 由于sent
一次的Maildir中创建的文件将只提供,我们应该为我们最初的电子邮件禁止写入这一点。 我们可以通过将做到这一点-Snorecord
选项。
通过管道一个字符串发送电子邮件mail
命令。 调整命令以将Linux用户标记为收件人:
echo 'init' | mail -s 'init' -Snorecord sammy
您应该得到以下响应:
OutputCan't canonicalize "/home/sammy/Maildir"
这是正常的,只会在第一封邮件显示。 我们可以检查以确保该目录是由寻找我们创建~/Maildir
目录:
ls -R ~/Maildir
你应该看到的目录结构已创建并新邮件文件是在~/Maildir/new
目录:
Output/home/sammy/Maildir/:
cur new tmp
/home/sammy/Maildir/cur:
/home/sammy/Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com
/home/sammy/Maildir/tmp:
它看起来像我们的邮件已经送达。
使用客户端管理邮件
使用客户端检查您的邮件:
mail
您应该会看到您的新邮件正在等待:
Outputs-nail version v14.8.6. Type ? for help.
"/home/sammy/Maildir": 1 message 1 new
>N 1 sammy@example.com Wed Dec 31 19:00 14/369 init
只是击中ENTER应该显示您的留言:
Output[-- Message 1 -- 14 lines, 369 bytes --]:
From sammy@example.com Wed Dec 31 19:00:00 1969
Date: Fri, 13 May 2016 18:07:49 -0400
To: sammy@example.com
Subject: init
Message-Id: <20160513220749.A278F228D9@mail.example.com>
From: sammy@example.com
init
您可以通过输入h让回到你的邮件列表:
h
Outputs-nail version v14.8.6. Type ? for help.
"/home/sammy/Maildir": 1 message 1 new
>R 1 sammy@example.com Wed Dec 31 19:00 14/369 init
由于此消息是不是非常有用,我们可以用D删除它:
d
退出要回使用q终端:
q
与客户端发送邮件
您可以通过在文本编辑器中键入消息来测试发送邮件:
nano ~/test_message
在里面,输入您要发送电子邮件的文字:
Hello,
This is a test. Please confirm receipt!
使用cat
命令,我们可以通过管道将消息发送到mail
的过程。 默认情况下,这将作为您的Linux用户发送消息。 您可以通过调整“发件人”字段-r
如果你想修改该值到别的标志:
cat ~/test_message | mail -s 'Test email subject line' -r from_field_account user@email.com
以上选项是:
-
-s
:电子邮件的主题行 -
-r
:可选更改为“从:”电子邮件的领域。 默认情况下,您将登录的Linux用户将用于填充此字段。 该-r
选项允许用户超越这个。 -
user@email.com
:发送电子邮件的帐户。 将此设置更改为您有权访问的有效帐户。
您可以在中查看已发送邮件mail
客户端。 键入以下内容以再次启动交互式客户端:
mail
然后,输入以下内容查看您发送的邮件:
file +sent
您可以使用与传入邮件相同的命令管理发送的邮件。
结论
您现在应该在您的Ubuntu 16.04服务器上配置Postfix。 管理电子邮件服务器对于初始管理员来说是一项艰巨的任务,但是通过此配置,您应该拥有基本的MTA电子邮件功能以帮助您开始使用。