个人发卡系统、图床、宝塔通知都需要一个邮件服务器,学着搭建一下

更新软件源

在安装任何软件前最好都执行一下更新软件源

sudo apt-get upgrade

开放端口

注意要开放 25 端口,开放方法就不写了,一堆方法
开放之后使用以下命令查看一下 25 端口有没有被防火墙或主机商屏蔽

sudo nmap 主机IP

我使用的是 oracle 免费实例,下面的都配置好了,发不了邮件,查了一下发现被屏蔽了。。。据说阿里云的也被屏蔽了

ubuntu搭建harbor ubuntu搭建邮件服务器_stmp


上面 25 端口已经开放,下面虽然我打码了,但是并没有 25 端口

ubuntu搭建harbor ubuntu搭建邮件服务器_ubuntu_02


可以看到是有 25 端口,服务是 smtp

安装 mailutils

mailutils 里面就包含了 sendmail 和 postfix,当然你也可以只安装 postfix,postfix 包含 sendmail
自己也试过很多遍,安装步骤大致相同,区别就是安装 mailutils 可以使用 mail 和 sendmail 命令,安装 postfix 只能使用 sendmail 命令

sudo apt install mailutils

ubuntu搭建harbor ubuntu搭建邮件服务器_服务器_03


ubuntu搭建harbor ubuntu搭建邮件服务器_ubuntu_04


No configuration:表示不要做任何配置

Internet Site:表示直接使用本地 SMTP 服务器发送和接收邮件

Internet with smarthos: 表示使用本地 SMTP 服务器接收邮件,但发送邮件时不直接使用本地 SMTP 服务器,而是使用第三方 smart host 来转发邮件

Satellite system:表示邮件的发送和接收都是由第三方 smarthost 来完成

Local only:表示邮件只能在本机用户之间发送和接收

ubuntu搭建harbor ubuntu搭建邮件服务器_ubuntu搭建harbor_05


可以翻译一下,本地主机上的邮件地址为foo@example.org,则该选项的正确值为 example.org,没看太懂,但大致意思就是域名使用的是哪个,就填写主域名即可,点击 OK 之后,输入自己的主域名

ubuntu搭建harbor ubuntu搭建邮件服务器_ubuntu搭建harbor_06


我这里填的 sywdebug.com

然后就安装成功了,可以使用以下命令再次打开这个玩意重新配置

sudo dpkg-reconfigure postfix

查看安装

使用以下命令查看安装版本

sudo postconf mail_version

ubuntu搭建harbor ubuntu搭建邮件服务器_stmp_07

配置域名

解析一个域名到自己的服务器,记录类型为 A,例如

mail.sywdebug.com

解析@到刚解析的域名,记录类型为 MX,MX 值写 10

ubuntu搭建harbor ubuntu搭建邮件服务器_ubuntu搭建harbor_08

发 QQ 邮件测试

我这里用 QQ 邮箱做测试,如果使用 gmail 邮箱可能会遇到错误,如果在收件箱没找到就去垃圾箱找,垃圾箱也没有的话可以去/var/log/mail.log 查看日志
方法一:

sendmail 收件人邮箱  # sendmail 向自己的邮箱发送邮件
邮件内容  # 输入邮件内容
.  # .表示结束并发送

ubuntu搭建harbor ubuntu搭建邮件服务器_发送邮件_09


ubuntu搭建harbor ubuntu搭建邮件服务器_ubuntu_10


方法二:

sendmail -F 发件人 -f 发件人邮箱前缀 -t 收件人邮箱
Subject:主题(不能使用中文)
邮件内容
.

ubuntu搭建harbor ubuntu搭建邮件服务器_stmp_11


ubuntu搭建harbor ubuntu搭建邮件服务器_stmp_12


方法三:

sendmail -t
From: 发件人邮箱前缀
To: 收件人邮箱
Subject: 主题(不能使用中文)
测试邮件内容
哈哈哈
.

ubuntu搭建harbor ubuntu搭建邮件服务器_发送邮件_13


ubuntu搭建harbor ubuntu搭建邮件服务器_服务器_14


方法四:

{ echo From: 发件人; echo To: 收件人邮箱; echo 邮件内容; } | sendmail -t

ubuntu搭建harbor ubuntu搭建邮件服务器_stmp_15


ubuntu搭建harbor ubuntu搭建邮件服务器_发送邮件_16

发 gmail 邮件配置

我在使用 gmail 邮箱测试时发生了错误,在Gmail SMTP 错误和代码可以找到所有关于 Gmail SMTP 的错误

ubuntu搭建harbor ubuntu搭建邮件服务器_ubuntu搭建harbor_17

said: 550-5.7.26 This message does not have authentication information or fails to 550-5.7.26 pass authentication checks. To best protect our users from spam, the 550-5.7.26 message has been blocked. Please visit 550-5.7.26  https://support.google.com/mail/answer/81126#authentication for more 550 5.7.26 information. i7-20020a170902c94700b00155d59481eesi12099890pla.88 - gsmtp (in reply to end of DATA command))

ubuntu搭建harbor ubuntu搭建邮件服务器_发送邮件_18


看了一下大致的方法,要设置 SPF 和 DKIM,然后再设置 DMARC 巴拉巴拉的我也不懂,只知道 SPF 是解析域名,然后解析一下,记录值参考 google 的定义 SPF 记录:基本设置

ubuntu搭建harbor ubuntu搭建邮件服务器_发送邮件_19


设置好后可以在Google 管理员工具箱检查

ubuntu搭建harbor ubuntu搭建邮件服务器_发送邮件_20


我这还是有一堆问题,上面那些红色的就不管了,看了下好像要购买 google 的服务,资深白嫖党表示拒绝

下面的 DKIM、DMARC 和 Google 邮件交换器看着也有点麻烦又难懂

索性发了个邮件测试了一下

ubuntu搭建harbor ubuntu搭建邮件服务器_stmp_21


ubuntu搭建harbor ubuntu搭建邮件服务器_ubuntu_22


收到了,,但是在垃圾箱,估计把上面那些配置好就不会在垃圾箱了

修改 postfix 配置文件(感觉配不配置好像没区别)

postfix 配置文件为 /etc/postfix/main.cf

myhostname 的值为真实指向的域名,例如

myhostname = mail.sywdebug.com

添加一行 mydomain 指向自己的主域名,例如

mydomain = sywdebug.com

myorigin,mydestination 可以指向$mydomain
mydestination 本身有很多值,可以把最前面的$myhostname 改成$mydomain

myorigin = $mydomain
mydestination = $mydomain

然后使用下面命令重载配置

systemctl reload postfix

写在最后

邮件是可以发了,但是配置还不是太熟悉,一般发邮件可能都是使用后端语言进行发送,在前面提到的各种需要配置邮件发送的地方,因为要 smtp 密码,但是使用用户的密码也不对,因此不知道怎么填写,后来偶然发现之前别人配置发送邮件的是直接使用网易的或者 QQ 的,我在 freenom 自动续期脚本上还用过,,索性不搞了,直接使用 QQ 的 smtp 服务,可以参考什么是授权码,它又是如何设置?,使用比较简单,例如我使用 QQ 的发送邮件直接这么填上就行

ubuntu搭建harbor ubuntu搭建邮件服务器_服务器_23

参考

Ubuntu 安装邮件服务器3 分钟安装配置 Postfix 邮件服务器安装和配置 PostfixGNU Mailutils