如果大家已经在使用第三方邮件服务方案发送并收取邮件,则无需运行自己的邮件服务器。然而,如果大家管理一套云服务器,且其中安装的应用需要发送邮件通知,那么运行一套本地只发送SMTP服务器则更为理想。

如何安装并配置Postfix以作为只发送SMTP服务器。

先决条件

要完成教程,大家需要:

请注意,我们的服务器主机名称应当与域名或者子域名相匹配。大家可以在命令提示中输入hostname验证服务器的主机名称。输出结果应当与Droplet创建时我们为其提供的名称相匹配。

第一步——安装Postfix

在此步骤中,我们将了解如何安装Postfix。在这里,我们选择最为高效的安装方式,即安装mailutils软件包。

首先更新该软件包数据库:

sudo apt-get update

安装mailtuils将安装Postfix以及其它一些Postfix所必需的程序。

sudo apt install mailutils

在安装过程末尾,大家会看到如下图所示的屏幕,其中默认选项为Internet Site。本教程亦推荐该默认选项,因此按下TAB再按回车。

在此之后,大家会看到另一个容器,如下所示。System邮件名称应该与我们在创建服务器时为其分配的名称保持一致。如果其显示subdomain.example.com这样的子域名,则将其变更为example.com。完成后,按下TAB再按回车。

第二步——配置Postfix

在这里,我们需要配置Postfix,要求其仅处理运行所在服务器上的邮件,即localhost。

Postfix需要在配置中监听loopbackinterface,即该服务器用于内部通信的虚拟网络接口。要实现变更,打开主Postfix配置文件:

  sudo nano /etc/postfix/main.cf

打开之后,找到以下部分:

/etc/postfix/main.cf . . .

  mailbox_size_limit = 0

  recipient_delimiter = +

  inet_interfaces = all

将inet_interfaces = all行变更为inet_interfaces = loopback-only。

  inet_interfaces = loopback-only
另外我们还需要修改mydestination指令,其用于指定通过local_transport邮件交付传输进行交付的域名列表。在默认情况下,其值如下所示:
  mydestination = $myhostname, example.com, localhost.com, , localhost
此场景下的推荐默认值如下所示,请大家根据实际情况进行修改:
  mydestination = $myhostname, localhost.$mydomain, $mydomain

 保存并退出。

如果大家在单一服务器上托管多个域名,则其它域名同样可以利用mydestination指令被发送至Postfix。

最后,重启Postfix。

  sudo systemctl restart postfix

第三步——测试SMTP服务器

在这里,我们将测试Postfix是否能够利用mail命令向外部邮件账户发送邮件。

发送测试邮件:

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

在执行测试时,大家可能需要使用对其中的对应部分进行调整,从而满足自己的实际情况。

现在检查发送测试消息的目标邮箱地址。大家应该能够在收件箱中看到对应消息——如果没有,请检查垃圾邮件箱。

注意,在此配置中,From字段内的地址应为sammy@example.com,其中sammy为Linux用户名,而域名部分则为该服务器的主机名称。如果大家变更用户名,则其中的From地址也应当对应变更。

第四步——转发系统邮件

最后设置转发机制,这样我们就能够将指向系统root的邮件转发至自己的个人外部邮箱了。

要实现这一功能,我们需要编辑/etc/aliases文件。

  

  • sudo nano /etc/aliases

此文件的默认内容如下:

  /etc/aliases

  # See man 5 aliases for format

  postmaster: root

在此设定下,系统生成的邮件会被发送至root用户。这里我们需要将其重新路由至自己的邮箱,变更后为:

  /etc/aliases

  # See man 5 aliases for format

  postmaster: root

  root: your_email_address

运行以下命令使变更生效:

  • sudo newaliases

再次发送邮件以进行测试:

  • echo “This is the body of the email” | mail -s “This is the subject line” root

大家应该能够正常收取到邮件。

总结

这就是Postfix只发送邮件服务器的全部设置流程。大家可能还需要采取一些额外步骤来保护自己的域名免受垃圾邮件打扰。

如果大家在单一地址接收来自服务器的通知,那么大家可能需要将其纳入白名单以避免其被列为垃圾邮件。不过,如果大家希望向潜在站点用户发送邮件,则应当设置SPF记录及以确保服务器邮件合法性。

一台服务器检查程序需要将检查结果自动发送给指定邮箱,想当然的使用mail命令,结果在测试时发现有错误:

mail: cannot send message: process exited with a non-zero status

其没有提到明确的问题,但从其中提出的/var/log/有两个log都记录了对应的信息,即syslog和mail.err。mail.err中的信息更明确:

postfix/sendmail[27115]: fatal: open /etc/postfix/main.cf: No such file or directory

然后意识到这台服务器安装完成后并没有配置postfix服务,于是重新配置:

sudo dpkg-reconfigure postfix
 
然后再使用mail命令发送邮件就正常了

 

Ubuntu 16.04上安装并配置Postfix作为只发送SMTP服务器的更多相关文章

  1. 如何在Ubuntu 16.04上安装配置Redis

    如何在Ubuntu 16.04上安装配置Redis Redis是一个内存中的键值存储,以其灵活性,性能和广泛的语言支持而闻名.在本指南中,我们将演示如何在Ubuntu 16.04服务器上安装和配置Re ...

  2. 在 Ubuntu 16.04上安装 vsFTPd

    在 Ubuntu 16.04上安装 vsFTPd Ubuntu vsFTPd 关于 vsFTPd vsFTPd 代表 Very Secure File Transfer Protocol Daemon ...

  3. 如何在Ubuntu 18.04上安装和配置Apache 2 Web服务器(转)

    如何在Ubuntu 18.04上安装和配置Apache 2 Web服务器 什么是Apache Web Server? Apache或Apache HTTP服务器是一个免费的开源Web服务器,由Apac ...

  4. Ubuntu 16.04上安装SkyEye及测试

    说明一下,在Ubuntu 16.04上安装SkyEye方法不是原创,是来自互联网,仅供学习参考. 一.检查支持软件包 gcc,make,vim(optional),ssh,subversionbinu ...

  5. Ternsorflow 学习:000-在 Ubuntu 16.04 上安装并使用 TensorFlow_v1.14 (改)

    声明:本人已经对原文链接根据情况做出合理的改动. 本系列文章使用的是Tensorflow v1.14 引言 TensorFlow 是由谷歌构建的用于训练神经网络的开源机器学习软件.TensorFlow ...

  6. 在 Ubuntu 16.04 上安装 Eclipse Oxygen

    2017 年 6 月 28 日,Eclipse 社区(the Eclipse Community)发布了 Eclipse Oxygen.本文记录了我在 Ubuntu 16.04 上安装 Eclipse ...

  7. 如何在Ubuntu 16.04上安装Apache Web服务器

    转载自:https://www.howtoing.com/how-to-install-the-apache-web-server-on-ubuntu-16-04 介绍 Apache HTTP服务器是 ...

  8. 如何在Ubuntu 16.04上安装Nginx

    原文链接https://www.digitalocean.com/community/tutorials/how-to-install-nginx-on-ubuntu-16-04 介绍 Nginx是世 ...

  9. ubuntu 16.04上安装php5.6

    php --ini 按下面的步骤,在ubuntu 16.04上面安装成功了 php5.6 dpkg -l | grep php| awk '{print $2}' |tr "\n" ...

随机推荐

  1. JSON 与 XML基本了解

    简单了解JSON 和 XML ,以及他们的区别: JSON:是一种轻量级的数据交换格式,ECMA(欧洲计算机制造商协会)的一个子集:   优点:轻量级.占用宽带小.易于人的阅读和编写,便于js解析,支 ...

  2. SAP R/3 IDES 4.71 编译前后硬盘空间大小比较

    使用SGEN编译前 使用SGEN编译后

  3. GDB多线程调试分析

    0x00: 在Linux系统上Gdb提供了一组多线程调试命令,如表所示: 多线程调试的主要任务是准确及时地捕捉被调试程序线程状态的变化的事件,并且GDB针对根据捕捉到的事件做出相应的操作,其实最终的结 ...

  4. Java问题定位之Java线程堆栈分析

    采用Java开发的大型应用系统越来越大,越来越复杂,很多系统集成在一起,整个系统看起来像个黑盒子.系统运行遭遇问题(系统停止响应,运行越来越慢,或者性能低下,甚至系统宕掉),如何速度命中问题的根本原因 ...

  5. linux下使用iperf测试服务器带宽

    准备工具 1.2台Linux服务器(要求其中至少1台主机为腾讯云主机,另外一台任意主机均可,确保2台主机可以互相访问即可)2.Iperf软件为专业网络性能测试工具. 测试目标 上海地区主机外网带宽是否 ...

  6. kk录像机怎么剪辑视频 kk录像机视频剪辑教程

    很多朋友录制视频都是用KK录像机,录制视频过后我们需要对视频进行修改和调整,下面小编就教大家怎么来剪辑KK录像机录制的视频 1.首先我们打开软件点[添加一个视频],添加需要剪切的视频 2.将播放指针移 ...

  7. anaconda和jupyter notebook使用方法

    查看安装的conda版本 conda --version 如果没有安装anaconda,可以从以下链接下载anaconda或者miniconda,两者安装一个就可以了 miniconda大约50M h ...

  8. 0 - python简介

    Python介绍 python的创始人为吉多·范罗苏姆(Guido van Rossum).1989年的圣诞节期间,吉多·范罗苏姆为了在阿姆斯特丹打发时间,决心开发一个新的脚本解释程序,作为ABC语言 ...

  9. 【2017-07-01】Linux应用开发工程师面试问题记录之二:关于结构体的大小及内存对齐问题

    Tencent后台服务器开发有一道题是计算一个结构体的sizeof的大小: struct strData { int m_Int; char m_Char; short m_Short; char m ...

  10. 正交矩阵、正规矩阵和酉矩阵(转自Ramble Over The Cloud~)

    网址:http://blog.csdn.net/alec1987/article/details/7414450 在数学中,正规矩阵 是与自己的共轭转置交换的复系数方块矩阵,也就是说, 满足 其中 是 ...