关键字:
CentIOS7
mailx
起因
最近想通过在服务器定时查看一些状态并通过邮件的方式来推送,在网上简单搜索发现大家普遍使用mailx来发送邮件,但是遇到了一个问题
could not connect: Connection timed out
/root/dead.letter
message not sent.
诸如类似的错误信息
分析
-
既然是连接失败,先看看是否能ping通smtp服务器,试了下是可以ping通的
-
可以ping通,那可能就是端口的问题了。可能是安全策略而限制了25端口的连接,于是将防火墙和selinux关停,依然连接失败。
-
想到之前阿里云好像要发邮件需要在安全策略设置一下开放25端口,google cloud可能也有类似的操作,查了一下发现了google的官方说明
-
既然不可以通过25端口出站,那应该可以通过465加密发送加密的邮件,在网上搜了一下发现了一个和详细的教程https://blog.csdn.net/qq_39626154/article/details/81706915
-
按照教程修改问题解决
步骤
- 关闭默认的邮件工具
chkconfig postfix off
service postfix stop
chkconfig sendmail off
service sendmail stop
- 安装mailx
yum install mailx -y
-
配置邮箱服务商的相关信息
3.1 首先确保邮箱服务商(qq,163)开启了smtp服务,并记录下smtp地址。
3.2 某些邮箱服务商(qq,163)发送邮件需要授权码(一个独立密码,用于登录第三方客户端),生成一个记录下来,一会要用到 -
在服务器上配置邮箱信息
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 #证书所在目录,这个可以改成其他的,但是不能空着,一会会根据这个目录生成证书
- 生成证书
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
- 发送测试邮件
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