(原)邮件告警发送服务基础环境搭建笔记
环境:ubuntu20.04 容器
邮件发送使用s-nail
配置文件为/etc/s-nail.rc
环境搭建步骤:
-
安装s-nail邮件服务
sudo apt install s-nail
-
打开163邮箱,进入设置,开启IMAP/stmp,POP3/stmp服务,并获取邮箱的授权码:xxxx
-
因为需要 163邮箱的 SSL 证书,所以我们还需要手动的获取163邮箱的证书保存到本地指定的目录里以备调用和验证,具体命令如下:
apt install -y certutil
apt-get install libnss3-tools
mkdir -p /root/.certs/
echo -n | openssl s_client -connect smtp.163.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > ~/.certs/163.crt
certutil -A -n "GeoTrust SSL CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
certutil -A -n "GeoTrust Global CA" -t "C,," -d ~/.certs -i ~/.certs/163.crt
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs/./ -i ~/.certs/163.crt
certutil -L -d /root/.certs为了防止出现前文所说的发送邮件警告提示,还需要进入邮箱 SSL 证书存放目录 /root/.certs 里执行如下命令:
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt -
编写s-nail.rc配置文件:
使用vi /etc/s-nail.rc
配置文件内容:
# This is the configuration file for Heirloom mailx (formerly
# known under the name "nail".
# See mailx(1) for further options.
# This file is not overwritten when 'make install' is run in
# the mailx build process again.
# Sccsid @(#)nail.rc 2.11 (gritter) 8/2/08
# Do not forward to mbox by default since this is likely to be
# irritating for most users today.
set hold
# Append rather than prepend when writing to mbox automatically.
# This has no effect unless 'hold' is unset again.
set append
# Ask for a message subject.
set ask
# Assume a CRT-like terminal and invoke a pager.
set crt
# Messages may be terminated by a dot.
set dot
# Do not remove empty mail folders in the spool directory.
# This may be relevant for privacy since other users could
# otherwise create them with different permissions.
set keep
# Do not remove empty private mail folders.
set emptybox
# Quote the original message in replies by "> " as usual on the Internet.
set indentprefix="> "
# Automatically quote the text of the message that is responded to.
set quote
# Outgoing messages are sent in ISO-8859-1 if all their characters are
# representable in it, otherwise in UTF-8.
set sendcharsets=iso-8859-1,utf-8
# Display sender's real names in header summaries.
set showname
# Display the recipients of messages sent by the user himself in
# header summaries.
set showto
# Automatically check for new messages at each prompt, but avoid polling
# of IMAP servers or maildir folders.
set newmail=nopoll
# If threaded mode is activated, automatically collapse thread.
set autocollapse
# Mark messages that have been answered.
set markanswered
# Hide some header fields which are uninteresting for most human readers.
ignore received in-reply-to message-id references
ignore mime-version content-transfer-encoding
# Only include selected header fields when forwarding messages.
#fwdretain subject date from to
# For Linux and BSD, this should be set.
set bsdcompat
set nss-config-dir=/root/.certs/
set from=lihaiping1603@163.com
set smtp=smtps://smtp.163.com
set ssl-verify=ignore
set smtp-auth=login
set smtp-auth-user=lihaiping1603@163.com
set smtp-auth-password=xxx配置文件的具体内容如上述。其中对几个主要参数做进一步的介绍:
from:对方收到邮件时显示的发件人 smtp:指定第三方发邮件的smtp服务器地址 set smtp-auth-user:第三方发邮件的用户名 set smtp-auth-password:用户名对应的密码,有些邮箱填的是授权码 smtp-auth:SMTP的认证方式,默认是login,也可以改成CRAM-MD5或PLAIN方式 nss-config-dir:对应的ssl证书生成目录,我们可以通过find / -name "cert*.db"方式查找到相应的目录。
-
测试
root@e2579822f3cc:/home/lhp/xx# echo "body" | s-nail -v -s "test" xxxx@qq.com
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp
s-nail: Obsoletion warning: variable superseded or obsoleted: ssl-verify
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-user
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-password
s-nail: No such file to load: /root/.mailrc
s-nail: Warning -- v15-compat=yes will be default in v14.10.0!
s-nail: P(seudo)R(andom)N(umber)G(enerator): *TLS RAND_*
s-nail: Obsoletion warning: Use of old-style credentials, which will vanish in v15!
s-nail: Please read the manual section "On URL syntax and credential lookup"
s-nail: Obsoletion warning: please don't use *smtp*: assign a smtp:// URL to *mta*!
s-nail: Resolving host smtp.163.com:smtps ... done
s-nail: Connecting to 220.181.12.18:smtps ... connected.
s-nail: TLS connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
root@e2579822f3cc:/home/lhp/xx#
root@e2579822f3cc:/home/lhp# cat /tmp/tmp_mail.txt | s-nail -v -Sttycharset=utf8 -s "pipe" lihaiping1@chinatelecom.cn
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp
s-nail: Obsoletion warning: variable superseded or obsoleted: ssl-verify
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-user
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-password
s-nail: Field already ignored: received
s-nail: Field already ignored: in-reply-to
s-nail: Field already ignored: message-id
s-nail: Field already ignored: references
s-nail: Field already ignored: mime-version
s-nail: Field already ignored: content-transfer-encoding
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp
s-nail: Obsoletion warning: variable superseded or obsoleted: ssl-verify
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-user
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-password
s-nail: Warning -- v15-compat=yes will be default in v14.10.0!
s-nail: P(seudo)R(andom)N(umber)G(enerator): *TLS RAND_*
s-nail: Obsoletion warning: Use of old-style credentials, which will vanish in v15!
s-nail: Please read the manual section "On URL syntax and credential lookup"
s-nail: Obsoletion warning: please don't use *smtp*: assign a smtp:// URL to *mta*!
s-nail: Resolving host smtp.163.com:smtps ... done
s-nail: Connecting to 220.181.12.14:smtps ... connected.
s-nail: TLS connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
root@e2579822f3cc:/home/lhp#
root@e2579822f3cc:/home/lhp# s-nail -v -Sttycharset=utf8 -s "a" -a /tmp/tmp_mail.txt lihaiping1@chinatelecom.cn < /tmp/tmp_mail.txt
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp
s-nail: Obsoletion warning: variable superseded or obsoleted: ssl-verify
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-user
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-password
s-nail: Field already ignored: received
s-nail: Field already ignored: in-reply-to
s-nail: Field already ignored: message-id
s-nail: Field already ignored: references
s-nail: Field already ignored: mime-version
s-nail: Field already ignored: content-transfer-encoding
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp
s-nail: Obsoletion warning: variable superseded or obsoleted: ssl-verify
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-user
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-password
s-nail: Warning -- v15-compat=yes will be default in v14.10.0!
s-nail: P(seudo)R(andom)N(umber)G(enerator): *TLS RAND_*
s-nail: Obsoletion warning: Use of old-style credentials, which will vanish in v15!
s-nail: Please read the manual section "On URL syntax and credential lookup"
s-nail: Obsoletion warning: please don't use *smtp*: assign a smtp:// URL to *mta*!
s-nail: Resolving host smtp.163.com:smtps ... done
s-nail: Connecting to 220.181.12.18:smtps ... connected.
s-nail: TLS connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
root@e2579822f3cc:/home/lhp#
root@e2579822f3cc:/home/lhp# s-nail -v -Sttycharset=utf8 -s "this is test" lihaiping1@chinatelecom.cn < /tmp/tmp_mail.txt
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp
s-nail: Obsoletion warning: variable superseded or obsoleted: ssl-verify
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-user
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-password
s-nail: Field already ignored: received
s-nail: Field already ignored: in-reply-to
s-nail: Field already ignored: message-id
s-nail: Field already ignored: references
s-nail: Field already ignored: mime-version
s-nail: Field already ignored: content-transfer-encoding
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp
s-nail: Obsoletion warning: variable superseded or obsoleted: ssl-verify
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-user
s-nail: Obsoletion warning: variable superseded or obsoleted: smtp-auth-password
s-nail: Warning -- v15-compat=yes will be default in v14.10.0!
s-nail: P(seudo)R(andom)N(umber)G(enerator): *TLS RAND_*
s-nail: Obsoletion warning: Use of old-style credentials, which will vanish in v15!
s-nail: Please read the manual section "On URL syntax and credential lookup"
s-nail: Obsoletion warning: please don't use *smtp*: assign a smtp:// URL to *mta*!
s-nail: Resolving host smtp.163.com:smtps ... done
s-nail: Connecting to 220.181.12.16:smtps ... connected.
s-nail: TLS connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
root@e2579822f3cc:/home/lhp#
root@e2579822f3cc:/home/lhp# s-nail -h
s-nail (s-nail v14.9.15): send and receive Internet mail
Send-only mode: send mail "to-addr"(ess) receiver(s):
s-nail [-DdEFinv~#] [-: spec] [-A account] [:-C "field: body":]
[:-a attachment:] [:-b bcc-addr:] [:-c cc-addr:]
[-M type | -m file | -q file | -t] [-r from-addr] [:-S var[=value]:]
[-s subject] [-T "arget: addr"] [:-X/Y cmd:] [-.] :to-addr:
"Receive" mode, starting on [-u user], primary *inbox* or [$MAIL]:
s-nail [-DdEeHiNnRv~#] [-: spec] [-A account] [:-C "field: body":]
[-L spec] [-r from-addr] [:-S var[=value]:] [-u user] [:-X/Y cmd:]
"Receive" mode, starting on -f (secondary $MBOX or [file]):
s-nail [-DdEeHiNnRv~#] [-: spec] [-A account] [:-C "field: body":] -f
[-L spec] [-r from-addr] [:-S var[=value]:] [:-X/Y cmd:] [file]
-d sandbox, -:/ no .rc files, -. end options and force send-mode
-a attachment[=input-charset[#output-charset]]
-[bcrT], to-addr: ex@am.ple or '(Lovely) Ex <am@p.le>'
-[Mmqt]: special input data (-t: template message on stdin)
-e only mail check, -H header summary; both: message specification via -L
-S (un)sets variable, -X/-Y execute commands pre/post startup, -#: batch mode
Features via "$ s-nail -Xversion -Xx"; there is --long-help
Bugs/Contact via "$ s-nail -Sexpandaddr=shquote '\$contact-mail'"
这里对s-nail的常用命令参数进行简单的介绍,详细的可以参考:http://manpages.ubuntu.com/manpages/bionic/man1/s-nail.1.html
-a file,可以为邮件添加附件文件file
-M xxxx, 为mime指定type
-m file, 这个没太搞懂和-q的区别,难道是这种会为文件的内容做拓展?然后文件的内容也会作为邮件的消息内容
-q file,将文件的内容指定为邮件的消息体
-S var=value,设置内部可变变量的值
-s subject,设置邮件的标题
-v 打印消息