Linux sendmail
•
Linux命令
安装服务
yum install sendmail
yum install -y mailx
配置服务
然后修改/etc/mail.rc,在文件末尾增加以下内容,指定外部的smtp服务器地址、帐号密码等
set from=123456@qq.com set smtp=smtp.qq.com set smtp-auth-user=123456 set smtp-auth-password=111111 set smtp-auth=login
命令行发邮件
1、无邮件正文
mail -s “主题” 收件地址
mail -s "测试" 123456@foxmail.com
2、有邮件正文
- mail -s “主题” 收件地址 < 文件(邮件正文.txt)
mail -s "邮件主题" 123456@foxmail.com < /data/findyou.txt
- echo “邮件正文” | mail -s 邮件主题 收件地址
echo "邮件正文内容" | mail -s "邮件主题" 123456@foxmail.com
- cat 邮件正文.txt | mail -s 邮件主题 收件地址
cat /data/findyou.txt | mail -s "邮件主题" 123456@foxmail.com
3、带附件
- mail -s “主题” 收件地址 -a 附件 < 文件(邮件正文.txt)
mail -s "邮件主题" 123456@foxmail.com -a /data/findyou.tar.gz < /data/findyou.txt
查看队列
mailq
显示待发送的邮件队列
mailq命令 用户显示待发送的邮件队列,显示的每一个条目包括邮件队列id、邮件大小、加入队列时间、邮件发送者和接受者。如果邮件最后一次尝试后还没有将邮件投递出去,则显示发送失败的原因。
查看日志
tail /var/log/maillog
通过465端口发送邮件
外网防火墙禁止25端口,那么如何绕过25端口呢?例如163邮箱的TSL加密协议465端口
创建目录,用来存放证书
mkdir -p /root/.certs/
向163请求证书
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 -L -d /root/.certs
配置完毕,重启sendmail,发送测试邮件。
错误提示和方案
- 证书不被信任:Error in certificate: Peer’s certificate issuer is not recognized.
cd /root/.certs/
certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt
- 没有找到主机名称:My unqualified host name () unknown; sleeping for XX
修改vim /etc/hosts,增加 {hostname}.com
And more