Postfix是一种流行的开源邮件传输代理(MTA),可用于在Linux系统上路由和传递电子邮件。据估计,互联网上约有25%的公共邮件服务器运行Postfix。
在本教程中,我们将教您如何在Ubuntu 16.04服务器上使用Postfix快速启动和运行。
要遵循本教程,您应该有设置好可以使用sudo
命令的非root账号。您可以按照我们的Ubuntu 16.04初始服务器设置教程来创建必要的用户。
为了正确配置Postfix,您需要一个指向Ubuntu 16.04服务器的完全限定域名。如果您打算接受邮件,则需要确保您的MX记录也指向您的邮件服务器。
出于本教程的目的,我们假设您正在配置具有mail.example.com
的FQDN的主机。
Postfix包含在Ubuntu的默认存储库中,因此安装非常简单。
首先,更新本地apt
程序包缓存,然后安装该软件。我们将DEBIAN_PRIORITY=low
环境变量传入我们的安装命令,以回答一些其他提示:
sudo apt-get update
sudo DEBIAN_PRIORITY=low apt-get install postfix
使用以下信息为您的环境正确填写提示:
mail.example.com
,但我们可能想要将系统邮件名设置为example.com
,以便给定用户名user1
,Postfix将使用该user1@example.com
地址。root@
和postmaster@
。使用您的主帐户。在我们的例子中叫sammy。为了明确起见,这些是我们将用于本教程的设置:
如果您需要返回以重新调整这些设置,可以通过输入以下内容来执行此操作:
sudo dpkg-reconfigure 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'
接下来,我们可以设置虚拟地图文件。在文本编辑器中打开文件:
sudo nano /etc/postfix/virtual
虚拟别名映射表使用非常简单的格式。在左侧,您可以列出您希望接收电子邮件的任何地址。然后,用空格分隔,输入您希望邮件传递到的Linux用户。
例如,如果您希望接受contact@example.com
和admin@example.com
电子邮件,希望将这些电子邮件发送给Linux用户sammy
,则可以像下面这样设置文件:
contact@example.com sammy
admin@example.com sammy
将所有地址映射到相应的服务器帐户后,保存并关闭该文件。
我们可以通过输入来应用映射:
sudo postmap /etc/postfix/virtual
重新启动Postfix进程以确保已应用所有更改:
sudo systemctl restart postfix
如果您正在运行UFW防火墙,如初始服务器设置教程中所配置,我们将不得不允许Postfix例外。
您可以通过输入以下内容来允许连接到服务:
sudo ufw allow Postfix
Postfix服务器组件已安装并准备就绪。接下来,我们将设置一个客户端,可以处理Postfix将处理的邮件。
在我们安装客户端之前,我们应该确保我们的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
为了与正在传递的邮件进行交互,我们将安装该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文件,用于存储已发送的邮件。
完成后保存并关闭文件。
现在,我们可以测试客户端了。
在我们的主目录中创建Maildir结构的最简单方法是给自己发送一封电子邮件。我们可以使用mail
命令执行此操作。因为sent
只有在创建Maildir后该文件才可用,我们应该禁止写入我们的初始电子邮件。我们可以通过传递-Snorecord
选项来做到这一点。
通过将字符串传递给mail
命令来发送电子邮件。调整命令以将Linux用户标记为收件人:
echo 'init' | mail -s 'init' -Snorecord sammy
你应该得到以下回应:
Can't canonicalize "/home/sammy/Maildir"
这是正常的,只会在第一条消息中显示。我们可以检查以确保通过查找我们的~/Maildir
目录来创建目录:
ls -R ~/Maildir
您应该看到已创建目录结构,并且目录中包含新的消息文件~/Maildir/new
:
/home/sammy/Maildir/:
cur new tmp
/home/sammy/Maildir/cur:
/home/sammy/Maildir/new:
1463177269.Vfd01I40e4dM691221.mail.example.com
/home/sammy/Maildir/tmp:
看起来我们的邮件已经发送。
使用客户端检查您的邮件:
mail
你应该看到你的新消息在等待:
s-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即可显示您的消息:
[-- 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
值修改为其他值,可以使用标志调整“From”字段:
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电子邮件功能来帮助您入门。
想要了解更多关于Linux的开源信息教程,请前往腾讯云+社区学习更多知识。
参考文献:《How To Install and Configure Postfix on Ubuntu 16.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。