Postfix是一种流行的开源邮件传输代理(MTA),可用于在Linux系统上路由和传递电子邮件。据估计,互联网上约有25%的公共邮件服务器运行Postfix。
在本教程中,我们将教您如何在Ubuntu 18.04服务器上使用Postfix快速启动和运行。
Ubuntu 18.04 的服务器,可以使用sudo
命令的非root
账户。
为了正确配置Postfix,您需要一个指向您的Ubuntu 18.04服务器的全限定域名(FQDN)。
出于本教程的目的,我们假设您正在配置具有FQDN的mail.example.com
主机。没有服务器的用户可以购买和使用腾讯云服务器或者直接在腾讯云实验室Ubuntu服务器上直接上机安装和配置Postfix。
Postfix包含在Ubuntu的默认存储库中,因此安装很简单。
首先,用apt
更新本地软件包,然后安装该软件。我们将DEBIAN_PRIORITY=low
环境变量传入我们的安装命令:
$ sudo apt update
$ sudo DEBIAN_PRIORITY=low apt install postfix
以下信息能够为您正确配置您的环境提供:
mail.example.com
,但我们可能希望将系统邮件名称设置为example.com
,以便给定用户名user1
,Postfix将使用地址user1@example.com
。root@
和postmaster@
。使用您的主帐户。在我们的例子中,sammy。0
后,就不会限制邮件大小了。all
。为了明确起见,这些是我们将用于本教程的设置:
如果您需要重新调整这些设置,可以通过输入以下内容来执行此操作:
$ 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
所有,则可以像下面这样,在/etc/postfix/virtual
文件添加以下内容:
contact@example.com sammy
admin@example.com sammy
将所有地址映射到相应的服务器帐户后,保存并关闭该文件。
我们可以通过输入来应用映射:
$ sudo postmap /etc/postfix/virtual
重新启动Postfix进程以确保已应用所有更改:
$ sudo systemctl restart postfix
如果您正在运行UFW防火墙,您可以输入以下内容来允许连接到服务:
$ 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 install s-nail
我们应该调整一些设置。在编辑器中打开/etc/s-nail.rc
文件:
$ sudo nano /etc/s-nail.rc
在/etc/s-nail.rc
文件底部,添加以下内容:
. . .
set emptystart
set folder=Maildir
set record=+sent
这将允许客户端即使使用空的收件箱也可以打开。它还将Maildir
目录设置为内部folder
变量,然后使用它在其中创建一个sent
mbox文件,用于存储已发送的邮件。
完成后保存并关闭文件。
现在,我们可以测试客户端了。
在我们的主目录中创建Maildir结构的最简单方法是给自己发送一封电子邮件。我们可以使用s-nail
命令执行此操作。因为sent
只有在创建Maildir后该文件才可用,我们应该禁止写入我们的初始电子邮件。我们可以通过传递-Snorecord
选项来做到这一点。
通过将字符串传递给s-nail
命令来发送电子邮件。调整命令,将Linux用户标记为收件人:
$ echo 'init' | s-nail -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:
看起来我们的邮件已经发送。
使用客户端检查您的邮件:
$ s-nail
你应该看到你的新消息在等待:
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
s-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
在〜/ test_message
里面,输入一些你想要发送电子邮件的文字:
Hello,
This is a test. Please confirm receipt!
使用cat
命令,我们可以将消息传递给s-nail
进程。默认情况下,这将以Linux用户身份发送消息。如果您想将该值修改为其他值,可以使用-r
标志调整“From”字段:
$ cat ~/test_message | s-nail -s 'Test email subject line' -r from_field_account user@email.com
以上选项是:
-s
:电子邮件的主题行-r
:对电子邮件的“发件人:可选地更改电子邮件的“From:”字段。默认情况下,您登录的Linux用户将用于填充这个字段。-r
选项允许您覆盖这个。user@email.com
:要将电子邮件发送到的帐户。将此更改为您有权访问的有效帐户。您可以在s-nail
客户端中查看已发送的消息。输入以下内容可以再次启动交互式客户端
$ s-nail
然后,输入以下内容查看已发送的邮件:
? file +sent
您可以使用用于传入邮件的相同命令来管理已发送邮件。
到此你就已经在Ubuntu 18.04服务器上配置Postfix。管理电子邮件服务器对于初级管理员来说可能是一项艰巨的任务,但是使用此配置,您应该拥有基本的MTA电子邮件功能来帮助您入门。如果您同样需要在CentOs系统上搭建邮件服务,可以参考腾讯云实验室的相关教程。
参考文献:《How To Install and Configure Postfix on Ubuntu 18.04》
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。