专栏首页云计算教程系列如何在Ubuntu 16.04上安装和配置Postfix作为仅发送SMTP服务器
原创

如何在Ubuntu 16.04上安装和配置Postfix作为仅发送SMTP服务器

介绍

Postfix是一种邮件传输代理(MTA),一种用于发送和接收电子邮件的应用程序。在本教程中,我们将安装和配置Postfix,使它仅可以用于本地应用程序发送电子邮件 - 即安装在Postfix所在的同一服务器上的电子邮件。

你为什么想这么做?

如果您已使用第三方电子邮件提供商来发送和接收电子邮件,则无需运行自己的邮件服务器。但是,如果您管理已安装需要发送电子邮件通知的应用程序的云服务器,则运行本地仅发送SMTP服务器是使用第三方电子邮件服务提供商或运行完整SMTP服务器的良好替代方案。

在本教程中,您将学习如何安装和配置Postfix作为仅发送SMTP服务器。

课程准备

要学习本教程,您需要:

  • 一个Ubuntu 16.04 腾讯CVM设置了Ubuntu 16.04初始设置,包括创建一个sudo非root用户,没有服务器的同学可以在这里购买,不过我个人更推荐您使用免费的腾讯云开发者实验室进行试验,学会安装后再购买服务器.
  • 有效的域名,例如example.com,指向您的服务器。如果你没有域名,建议您先去这里注册一个域名.

请注意,您的服务器的主机名应与此域或子域匹配。您可以通过在命令提示符下键入hostname来验证服务器的主机名。输出应该与您在创建腾讯CVM时给出的名称相匹配。

第1步 - 安装Postfix

在此步骤中,您将学习如何安装Postfix。安装Postfix和测试电子邮件所需的其他程序的最有效方法是安装mailutils软件包。

首先,更新包数据库:

sudo apt-get update

最后,安装Postfix。安装mailtuils时也会同时安装Postfix以及Postfix运行所需的一些其他程序。

sudo apt install mailutils

在安装过程即将结束时,您将看到一个与下图中的窗口完全相同的窗口。默认选项是Internet Site。这是本教程的推荐选项,请按TAB,然后按ENTER

之后,您将获得另一个窗口,就像下一个图像中的窗口一样。该系统邮件名称应该是一样的,你分配给服务器,当你在创造它的名字。如果它显示子域subdomain.example.com时,请将其更改为 example.com。完成后,按TAB,然后ENTER

安装成功完成后,继续执行第二步。

第2步 - 配置Postfix

在此步骤中,您将了解如何配置Postfix以处理仅从运行它的服务器(即localhost)发送电子邮件的请求。

为此,需要将Postfix配置为仅侦听环回接口,即服务器用于内部通信的虚拟网络接口。要进行更改,请使用nano或您喜欢的文本编辑器打开主Postfix配置文件。

sudo nano /etc/postfix/main.cf

打开文件,向下滚动,直到看到以下部分。

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
. . .

将读取行从inet_interfaces = all改为inet_interfaces = loopback-only

. . .
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = loopback-only
. . .

您需要修改的另一个指令是mydestination,该指令用于指定通过local_transport邮件传递的域列表。默认情况下,这些值应当类似于:

/etc/postfix/main.cf. . .
mydestination = $myhostname, example.com, localhost.com, , localhost
. . .

该场景的建议默认值在下面的代码块中给出,因此请修改以匹配:

/etc/postfix/main.cf. . .
mydestination = $myhostname, localhost.$mydomain, $mydomain
. . .

保存并关闭文件。

如果您在单个服务器上托管多个域,则还可以使用该mydestination指令将其他域传递给Postfix 。但是,以缩放的方式配置Postfix并且不会出现此类设置的问题涉及超出本文范围的其他配置。

最后,重启Postfix。

sudo systemctl restart postfix

第3步 - 测试SMTP服务器

在此步骤中,您将测试Postfix是否可以使用该mail命令将电子邮件发送到外部电子邮件帐户,该命令是步骤1中安装的mailutils软件包的一部分。

要发送测试电子邮件,请键入:

echo "This is the body of the email" | mail -s "This is the subject line" your_email_address

在执行您自己的测试时,您可以按原样使用正文和主题行文本,或根据自己的喜好进行更改。但是,请使用有效的电子邮件地址代替your_email_address。域部分可以是gmail.comfastmail.comyahoo.com,或任何其他你使用的电子邮件服务提供商。

现在,检查发送测试邮件的电子邮件地址。您应该在收件箱中看到该消息。如果没有,请检查垃圾邮件文件夹。

请注意,使用此配置,您发送的测试电子邮件的“ 发件人”字段中的地址将是sammy@example.com,其中sammy是您的Linux用户名,域部分是服务器的主机名。如果您更改了用户名,则发件人地址也会更改。

第4步 - 转发系统邮件

我们要设置的最后一件事是转发,因此您将通过个人外部电子邮件地址将电子邮件发送到系统上的root用户

要配置Postfix以便系统生成的电子邮件将发送到您的电子邮件地址,您需要编辑该/etc/aliases文件。

sudo nano /etc/aliases

Ubuntu 16.04的默认安装文件的完整内容如下:

# See man 5 aliases for format
postmaster:    root

使用该设置,系统生成的电子邮件将发送给root用户。您要做的是编辑它,以便将这些电子邮件重新路由到您的电子邮件地址。要完成此操作,请编辑该文件,使其显示为:

# See man 5 aliases for format
postmaster:    root
root:          your_email_address

用您的个人电子邮件地址来替换your_email_address。完成后,保存并关闭文件。要使更改生效,请运行以下命令:

sudo newaliases

您现在可以通过使用以下方式向root帐户发送电子邮件来测试它的工作原理:

echo "This is the body of the email" | mail -s "This is the subject line" root

您应该通过电子邮件地址收到电子邮件。如果没有,请检查垃圾邮件文件夹。

结论

这就是使用Postfix设置只发送电子邮件服务器所需的全部内容。您可能需要采取一些额外步骤来保护您的域免受垃圾邮件发送者的侵害。

如果您的用例是从一个地址接收服务器的通知,则标记为垃圾邮件的电子邮件是一个主要问题,因为您可以将它们列入白名单。但是,如果您的用例是向潜在的网站用户发送电子邮件(例如留言板注册的确认电子邮件),您肯定应该设置SPF记录和DKIM,以便您的服务器电子邮件更有可能被视为合法。

如果配置正确,则很难发送垃圾邮件,其地址似乎来自您的域。执行这些额外的配置步骤还可以使普通邮件提供商更有可能将来自您服务器的电子邮件视为合法邮件。

更多Ubuntu教程请前往腾讯云+社区学习更多知识。


参考文献:《How to Install and Configure Postfix as a Send-Only SMTP Server on Ubuntu 16.04》

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 如何在CentOS 7上使用Docker安装Prometheus

    Prometheus是一个开源监控系统和时间序列数据库。它涉及监控的许多方面,例如度量标准的生成和收集,在仪表板上绘制结果数据以及针对异常情况发出警报。为实现这...

    吴凌云
  • 使用Debian 8进行初始服务器设置

    当您第一次创建新的Debian 8服务器时,您应该尽早采取一些配置步骤作为基本设置的一部分。这将提高服务器的安全性和可用性,并为后续操作奠定坚实的基础。

    吴凌云
  • 如何在Ubuntu 18.04上安装Jenkins

    Jenkins是一个开源自动化服务器,可以自动执行持续集成和交付软件所涉及的重复技术任务。Jenkins是基于Java的,可以从Ubuntu软件包安装,也可以通...

    吴凌云
  • 通过电子邮件营销增强你的电商业务

    想要提高跨境电商销售额,但不知道下一次应该将营销预算投入到哪? 你需要了解的是:64%的公司认为跨境电商中电子邮件营销是最有效的营销渠道。 即使有许多新的营销渠...

    臭豆腐
  • Influx Sql系列教程四:series/point/tag/field

    influxdb中的一条记录point,主要可以分为三类,必须存在的time(时间),string类型的tag,以及其他成员field;而series则是一个m...

    一灰灰blog
  • Google是如何做Code Review的?| CSDN原力计划

    我和几个小伙伴一起翻译了Google前一段时间放出来的Google’s Engineering Practices documentation(https://...

    AI科技大本营
  • 激励机制:区块链的幕后英雄

    在区块链中,激励机制受到的关注远远少于共识机制。相比于共识机制绝对的核心位置,激励机制是建立在共识机制之上的另一个次核心,在公链中同样扮演着举足轻重的角色。两个...

    GAIAWorld
  • 西班牙国会讨论立法区块链数字资产抵押系统开发

    该倡议草案得到了议会多数党西班牙人民党的支持,并赢得了当日出席众议院财政和公共职能委员会会议的各方支持。该文件呼吁对有关比特币和区块链技术的数字资产系统开发监管...

    ruiec1212
  • RxJava2 实战知识梳理(5) - 简单及进阶的轮询操作

    今天,我们介绍一种新的场景,轮询操作。也就是说,我们会尝试间隔一段时间就向服务器发起一次请求,在使用RxJava之前,该需求的实现一般有两种方式:

    用户2802329
  • 中钞络谱:开放SDK,提供一站式区块链开发

    近日,中钞信用卡产业发展有限公司杭州区块链技术研究院,在全球金融科技(杭州)峰会上正式发布中钞络谱区块链登记开放平台,将面向各行业应用提供区块链技术服务。 中钞...

    BestSDK

扫码关注云+社区

领取腾讯云代金券