Linux【12】-其他2-发邮件(mail)
每个Linux主机上的用户都有一个mailbox,可以用来发邮件,一般mailbox都放在/var/spool/mail/
一、安装与配置
1.1 安装mailx
检查是否安装
[root@www ]# rpm -qa |grep mail
安装
[root@www ]# yum install -y mailx //没有的话进行yum安装
1.2 配置
申请证书
mkdir -p /home/sam/.certs/
echo -n | openssl s_client -connect smtp.sina.cn:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > /home/sam/.certs/sina_cn.crt
显示的信息
depth=2 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = DigiCert Global Root CA
verify return:1
depth=1 C = US, O = DigiCert Inc, OU = www.digicert.com, CN = GeoTrust RSA CA 2018
verify return:1
depth=0 C = CN, L = \E5\8C\97\E4\BA\AC, O = \E6\96\B0\E6\B5\AA\E7\BD\91\E6\8A\80\E6\9C\AF\EF\BC\88\E4\B8\AD\E5\9B\BD\EF\BC\89\E6\9C\89\E9\99\90\E5\85\AC\E5\8F\B8, OU = "Sina.com Technology(China)Co.,ltd", CN = *.sina.cn
verify return:1
DONE
添加信任证书
certutil -A -n "DigiCert Global Root CA" -t "C,," -d ~/.certs -i /home/sam/.certs/sina_cn.crt ####添加一个证书到证书数据库中
certutil -A -n "GeoTrust RSA CA 2018" -t "C,," -d ~/.certs -i /home/sam/.certs/sina_cn.crt ####添加一个证书到证书数据库中
certutil -L -d /home/sam/.certs/
####列出目录下证书
Certificate Nickname Trust Attributes
SSL,S/MIME,JAR/XPI
DigiCert Global Root CA C,,
报错:
certutil: function failed: SEC_ERROR_LEGACY_DATABASE: The certificate/key database is in an old, unsupported format
报错的原因是 命令有误,如下:
certutil -L -d /root/
编辑mail的配置(非默认25端口):
[root@www ]# vim /etc/mail.rc
set from=xiaoming@163.com # 邮箱地址
# set smtp=smtp.163.com #默认25的端口
set smtp=smtps://smtp.163.com:465
set smtp-auth-user=xiaoming #登录邮箱帐号,不用加@qq.com或者
set smtp-auth-password=w123456 #邮箱密码,由于163邮箱需要设置授权,此处需要填写授权密码
set smtp-auth=login
set ssl-verify=ignore
set nss-config-dir=/home/sam/.certs #ssl的加密证书
1.3 测试
echo "hehe" | mail -v -s "test" tiehan@sina.cn
报错:
Error initializing NSS: Unknown error -8015.
报错原因:
这个问题是因为没办法读取证书文件导致的,因为复制文件的时候需要访问/etc/ssl/certs,需要root权限,所以复制过来的文件的拥有者也是root,而且这几个证书db文件的权限是-rw——-,复制过来拥有者变成root,普通用户连读的权限都没有,所以解决办法有几个
我将ssl证书放在root下面,却在sam用户下发送邮件,现已更正过来
1.4 注意
- 记得要进邮箱打开SMTP
- 阿里云ECS基于安全考虑,目前已禁用25端口。可以用465端口来代替。
二、发送邮件
2.1 邮件主题:
mail -s “test” ***@***.cn
这条命令的结果是发一封标题为test的空信给后面的邮箱,如果你有mta并且后面的邮箱不会挡这种可能莫名奇妙的信的时候,就能收到这封信了。
2.2 带内容
方法一:
echo “mail content”|mail -s test ***@****.cn
或者是
cat id.txt |mail -s test ***@****.cn
方法二:
文本编辑好内容再发送,用<后面接文件名
mail -s "fjal" qqin@genowise.com <id_rsa.pub
方法三:
例如:
mailtest@hotmail.com
Subject : mail test
:
键入信文内容
: :
按下Ctrl+D 键或. 键结束正文。
连按两次Ctrl+C键则中断工作,不送此信件。
Cc( Carbon copy) : 复制一份正文,给其他的收信人。
2.3 带附件
(没用过,但方法可参见下面的) 如果你的系统里没有uuencode命令的话,请先安装sharutils(yum install sharutils) uuencode 需要两个参数,第一个是你要发送的文件(们),当然这个也可以用管道来做,第二个是显示的文件名
uuencode /home/yfang/a.gif a.gif|mail -s pictest yangfang@fudan.edu.cn
tar czf - /home/yfang/ | uuencode home.tgz |mail -s pictest yangfang@fudan.edu.cn
2.4 检查所传送的电子邮件是否送出,或滞留在邮件服务器中
/usr/lib/sendmail -bp
若屏幕显示为“Mail queue is empty” 的信息,表示mail 已送出。 若为其他错误信息,表示电子邮件因故尚未送出。
2.5 mail查看邮件
个人感觉没有网页好看,有点鸡肋,具体参见《鸟哥私房菜》。 基本用法:
终端输入mail
h 列出信件表头
输入数字 就能看到对应的邮件
d d+数字,删掉
参考资料
这里是一个广告位,,感兴趣的都可以发邮件聊聊:tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn
个人公众号,比较懒,很少更新,可以在上面提问题,如果回复不及时,可发邮件给我: tiehan@sina.cn