跳到主要内容

Linux 配置邮件服务

概述

什么时候会用到邮件服务

在使用 LInux 系统时,有很多场景需要用到邮件服务。例如,当您想向 Linux 内核提交 patch,那么就需要事先配置好邮件服务,以便于与内核团队协作。或者在 Linux 服务器出现异常时,希望能主动向管理员发送告警信息,那么就需要事先配置好邮件服务,才具备发送邮件的功能。

在 Linux 操作系统环境中,可以配置邮件服务器,也可以配置邮箱客户端。

本篇主要是配置邮件客户端,这对于发送服务器一些系统信息十分有必要。

SMTP 和 SMTPS

SMTP 和 SMTPS 都是用来发送邮件的。SMTPS 是加密版的 SMTP,也就是在 SMTP 的基础上使用 ssl 来对数据进行加密、防篡改等,因此更安全。目前腾讯云、阿里云、华为云等都推荐使用 SMTPS,默认禁止 SMTP(可以通过工单申请开放 SMTP)。

SMTP 的默认端口是 25,SMTPS 的默认端口通常是 587。由于历史原因,有些 SMTPS 使用 465 端口。

邮箱客户端

mail

安装

sudo apt install mailutils

编辑配置文件,在最后一行添加内容如下:

set from=xxx@163.com
set smtp=smtp.163.com
set smtp-auth-user=xxx@163.com
set smtp-auth-password=***
# smtp-auth-password表示我邮箱的第三方客户端授权码
set smtp-auth=login

测试发送

mail -s "hello" luhuadong@163.com < /etc/hosts

如果收到邮件,说明配置成功

自动化脚本 smtp.sh

#!/bin/bash
# FileName: smtp.sh
# Version: 1.0
# Date: 2020-04-24
# Author: baige
# Description: the script for smtp configration
read -p "Please Input Your Email Provider [163/qq/126]: " provider
read -p "Please Input Your Email Account: " account
read -p "Please Input Your Auth-Password: " password
echo "Waiting For A Moment..."
yum install mailx sendmail -y >/dev/null0
cat >>/etc/mail.rc<< EOF
set from=$account@$provider.com #邮箱地址
set smtp=smtp.$provider.com #smtp服务器
set smtp-auth-user=$account #邮箱账号
set smtp-auth-password=$password #授权密码,注意是授权密码,不是在web页面上登邮箱的密码,授权密码可以在邮箱的pop3/smtp设置页面自行设置。
set smtp-auth=login
EOF
systemctl start sendmail

执行脚本,这里输入自己的邮箱信息即可。发送邮件测试

echo '邮件内容' | mail -s '邮件主题' 3473067134@qq.com

测试的目标邮箱可以正常收到邮件,配置成功。

因为smtps使用了ssl加密,所以在smtp的基础上,我们加上ssl证书相关的配置即可。

#!/bin/bash
# FileName: smtps.sh
# Version: 1.0
# Date: 2020-04-24
# Author: baige
# Description: the script for smtps configration
read -p "Please Input Your Email Provider [163/qq/126]: " provider
read -p "Please Input Your Email Account: " account
read -p "Please Input Your Auth-Password: " password
echo "Waiting For A Moment..."
yum install mailx sendmail -y >/dev/null
mkdir -p /root/.certs/ #从这里开始,均为下载ssl证书及相关配置#
echo -n | openssl s_client -connect smtp.$provider.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/$provider.crt >/dev/null
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/$provider.crt >/dev/null
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/$provider.crt >/dev/null
certutil -L -d /root/.certs >/dev/null
cat >>/etc/mail.rc<< EOF #以下为邮箱账户相关配置#
set from=$account@$provider.com
set smtp=smtps://smtp.$provider.com:465
set smtp-auth-user=$account@$provider.com
set smtp-auth-password=$password
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/root/.certs"
EOF
systemctl start sendmail

mutt + msmtp

msmtp 是一个 SMTP 客户端,可将邮件传送至 SMTP 服务端。而 Mutt 是一个 email 客户端,它不能直接传送邮件,更多的是承担对 email 的管理功能。

安装

sudo apt install mutt msmtp

安装完成后,还需要

groups msmtp
sudo touch /var/log/msmtp
sudo chown msmtp:msmtp /var/log/msmtp
sudo chmod 660 /var/log/msmtp

添加 ~/.msmtprc 配置文件,以 163 邮箱为例,内容如下:

account default 
host smtp.163.com
port 25
from xxx@163.com # 按照实际情况填写真实的邮箱地址
auth login
tls off
user xxx # 邮箱使用者名称
password ****** # 这里填的是授权码,不是邮箱登录密码
logfile /var/log/msmtp

支持 tls

defaults
port 587
tls on
tls_trust_file /etc/ssl/certs/ca-certificates.crt
account freemail
host smtp.partner.outlook.cn
from chen_dong@abc.cn
auth on
user zhang_san@abc.cn
password XXXXXXX
logfile ~/.msmtp.log
account default : freemail

测试

msmtp -t 870179822@qq.com

配置 Mutt,/etc/Muttrc

set sendmail='/usr/bin/msmtp'
set use_from=yes
set realname="Rudy Lo"
set editor="vim"
set from=luhuadong@163.com
set envelope_from=yes
auto_view text/html
set charset='utf-8'
set send_charset='utf-8'
#set locale ="zh_CN.UTF-8"
set content_type = 'text/html\;charset=utf-8'
set rfc2047_parameters=yes

上面的 realname 可以任意设定,这样当您发邮件给别人的时候,收件人看到发到发件人的 title 就是这里设定的内容。

简单测试

echo "Hello, World!" | mutt -s "GetIoT.tech" 870179822@qq.com

新增附件测试

echo "Hello, World!" | mutt -s "GetIoT.tech" 870179822@qq.com -a /etc/lsb-release

测试邮箱服务器

$ msmtp --host=smtp.163.com --serverinfo
SMTP server at smtp.163.com (m12-16.163.com [220.181.12.16]), port 25:
163.com Anti-spam GT for Coremail System (163com[20141201])
Capabilities:
PIPELINING:
Support for command grouping for faster transmission
STARTTLS:
Support for TLS encryption via the STARTTLS command
AUTH:
Supported authentication methods:
PLAIN LOGIN
This server might advertise more or other capabilities when TLS is active.

常见免费邮箱

常见免费邮箱 SMTP 服务地址及端口

邮箱服务服务器地址SSL端口号非SSL端口号
163邮箱IMAPimap.163.com993143
SMTPsmtp.163.com465/99425
POP3pop.163.com995110
QQ邮箱IMAPimap.qq.com993143
SMTPsmtp.qq.com465/58725
POP3pop.qq.com995
foxmail邮箱IMAPimap.foxmail.com993143
SMTPsmtp.foxmail.com46525
POP3pop.foxmail.com995110
gmail邮箱IMAPimap.gmail.com993
SMTPsmtp.gmail.com465/587
POP3pop.gmail.com995