Linux sendmail

安装服务

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

Linux sendmail

配置完毕,重启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

Linux sendmail

And more