Hugo ʕ•ᴥ•ʔ Bear Blog

前言


习惯的养成是主动和被动共同的硕果,但完全依赖习惯,也会增加大脑的负担。这几天往往因为其他的事情,而忘记上下班打卡。为此,基于之前的经验,重新在瓦工上部署了 mailx+posfix,并且通过 cron 脚本定时提醒,以下是操作的步骤。

正文


最初我的目的是搭建一个 web 邮箱服务,但后面考虑到复杂程度和需求,最终决定先使用 Postfix + Dovecot,

简介:Postfix 是一个流行的邮件传输代理,Dovecot 是一个 IMAP/POP3 服务器。结合使用可以搭建功能强大的邮件服务。特点:灵活性高,支持多种邮件协议,适合有一定技术基础的用户。

目前还没花时间研究 Dovecot,所以这部分等有空的时候再去补充。

安装 Postfix 和 Dovecot


在基于 Debian 或 Ubuntu 的系统上,可以使用以下命令安装:

sudo apt update
sudo apt install postfix dovecot-core dovecot-imapd

在安装过程中,会提示配置 Postfix,选择 “Internet Site”,并输入你的域名。

配置 Postfix


编辑 Postfix 配置文件 /etc/postfix/main.cf,确保以下设置:

myhostname = your.com
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
relayhost =
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
inet_protocols = all

编辑 /etc/mailname 文件

sudo nano /etc/mailname

在文件中输入你的域名,例如:

matrixcore.life

重启 postfix

sudo systemctl restart postfix

替换发件人名称,创建或编辑 /etc/postfix/sender_canonical 文件:

sudo nano /etc/postfix/sender_canonical

添加以下行:

root@原来 root@现在

运行以下命令以生成 Postfix 可使用的映射数据库:

sudo postmap /etc/postfix/sender_canonical

确保在 /etc/postfix/main.cf 中添加或更新以下行:

sender_canonical_maps = hash:/etc/postfix/sender_canonical

在完成上述步骤后,重新加载 Postfix 以应用更改:

sudo systemctl reload postfix

配置 DNS 记录


添加 MX 记录


添加 A 记录


验证配置


dig MX yourdomain.com
dig A mail.yourdomain.com

确保返回的结果与你设置的记录相符。

安装 mailx


sudo apt install mailutils
#sudo apt install bsd-mailx  或者使用这条命令

配置 mailx


sudo vim /etc/mail.rc

然后添加以下内容(根据你的邮件服务器设置进行调整):

set from=your@qq.com
set smtp=smtps://smtp.qq.com:465
set smtp-auth-user=your@qq.com
set smtp-auth-password=获取授权
set smtp-auth=login
set ssl-verify=ignore
set smtp-use-starttls
set nss-config-dir=/root/.certs/

set from=your@163.com
set smtp=smtps://smtp.163.com
set smtp-auth=login
set smtp-auth-user=your@163.com
set smtp-auth-password=获取授权
set ssl-verify=ignore
set nss-config-dir=/root/.certs/

参考mailx 通过 smtp 登录 QQ 邮箱发送邮件 - 知乎 (zhihu.com)因为需要 QQ 邮箱的 SSL 证书,所以我们还需要手动的获取 QQ 邮箱的证书保存到本地指定的目录里以备调用和验证,具体命令如下:

mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.qq.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/qq.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/qq.crt
certutil -L -d /root/.certs

为了防止出现发送邮件警告提示,还需要进入邮箱 SSL 证书存放目录

cd /root/.certs 里执行如下命令:

certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i qq.crt

返回如下提示即可:

Notice: Trust flag u is set automatically if the private key is present.

这是为了信任证书的标记操作

发送测试邮件


echo "Test email body" | mail -s "Test Subject" recipient@example.com

使用 cron 任务


使用以下命令查看当前时区:timedatectl

如果时区不正确,可以使用以下命令设置为上海时间:sudo timedatectl set-timezone Asia/Shanghai

更改时区后,您可能需要重启  cron  服务以应用更改:sudo systemctl restart cron

30 19 * * 1-6 echo "记得打卡" | mailx -s "Remember to clock in and out." your@qq.com

总结


本文介绍了如何在服务器上搭建邮件服务,使用 Postfix 和 Dovecot 的组合,以实现定时提醒功能。首先,安装并配置 Postfix 和 Dovecot,设置正确的 DNS 记录以确保邮件服务器可用。接着,安装并配置 mailx,添加必要的 SMTP 信息和 SSL 证书以确保邮件安全发送。最后,通过 cron 设置每日提醒,帮助用户避免忘记上下班打卡,从而提升日常工作管理效率。

#实用教程