[Linux]CentOS7通过shell(Bash)发送邮件

13 篇文章 0 订阅

关键字:
CentIOS7
mailx

起因

最近想通过在服务器定时查看一些状态并通过邮件的方式来推送,在网上简单搜索发现大家普遍使用mailx来发送邮件,但是遇到了一个问题

 could not connect: Connection timed out
 /root/dead.letter
 message not sent.

诸如类似的错误信息

分析

  1. 既然是连接失败,先看看是否能ping通smtp服务器,试了下是可以ping通的

  2. 可以ping通,那可能就是端口的问题了。可能是安全策略而限制了25端口的连接,于是将防火墙和selinux关停,依然连接失败。

  3. 想到之前阿里云好像要发邮件需要在安全策略设置一下开放25端口,google cloud可能也有类似的操作,查了一下发现了google的官方说明google cloud 给的解释

  4. 既然不可以通过25端口出站,那应该可以通过465加密发送加密的邮件,在网上搜了一下发现了一个和详细的教程https://blog.csdn.net/qq_39626154/article/details/81706915

  5. 按照教程修改问题解决

步骤

  1. 关闭默认的邮件工具
chkconfig postfix off   
service postfix stop    
chkconfig sendmail off 
service sendmail stop
  1. 安装mailx
yum install mailx -y
  1. 配置邮箱服务商的相关信息
    3.1 首先确保邮箱服务商(qq,163)开启了smtp服务,并记录下smtp地址。
    3.2 某些邮箱服务商(qq,163)发送邮件需要授权码(一个独立密码,用于登录第三方客户端),生成一个记录下来,一会要用到

  2. 在服务器上配置邮箱信息

set from=xx@qq.com    #发件邮箱,这里我使用了qq邮箱
set smtp=smtps://smtp.qq.com:465   #smtp服务器和端口地址
set smtp-auth-user=xx@qq.com    #发件邮箱,这里我使用了qq邮箱
set smtp-auth-password=xxx    #qq,163填写授权码,其他邮箱服务可以查一下是怎样解决的,应该是类似的。否则发送邮件时会报错误,qq会报这个错误smtp-server: 535
set smtp-auth=login    #默认login即可,默认,不用修改
set ssl-verify=ignore    #ssl认证方式,默认,不用修改
set nss-config-dir=/root/.certs    #证书所在目录,这个可以改成其他的,但是不能空着,一会会根据这个目录生成证书
  1. 生成证书
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
cd  /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ~/.certs/./ -i qq.crt
certutil -L -d /root/.certs

在这里插入图片描述

  1. 发送测试邮件
 mail -s "title" xxx@qq.com < /eta/passwd

参考

Bash发送不同格式(plain,html)的邮件
https://www.if-not-true-then-false.com/2010/install-google-chrome-with-yum-on-fedora-red-hat-rhel/

关闭本机的sendmail服务或者postfix服务,直接采用mailx发送
https://www.cnblogs.com/xiaoshi1991/archive/2012/09/19/2694465.html

详细的说明,如何在第三方设置smtp服务,授权码等操作
https://blog.csdn.net/zhezhebie/article/details/75262315

分析 could not connect: Connection timed out 问题
可能由于云服务商关闭了25端口导致发送失败
https://blog.csdn.net/qq_42859864/article/details/84862264
https://cloud.google.com/compute/docs/tutorials/sending-mail/?hl=zh-cn

最重要的一篇参考文章:如何通过465接口发送邮件
https://blog.csdn.net/qq_39626154/article/details/81706915

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值