set smtp=smtps://smtp.xxx.com:465 # 这里填入smtp地址 set smtp-auth=login # 认证方式 set smtp-auth-user=user@xxx.com # 这里输入邮箱帐号 set smtp-auth-password=password # 这里填入密码 set ssl-verify=ignore # 忽略证书警告 set nss-config-dir=/etc/pki/nssdb # 证书所在目录 set from=user@xxx.com # 设置发信人邮箱和昵称 #set smtp-use-starttls=yes # STARTTLS时使用
# 126不支持STARTTLS,使用465端口 account 126 { set smtp=smtps://smtp.126.com:465 set smtp-auth=login set smtp-auth-user=user@126.com set smtp-auth-password=password set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb set from=password@126.com } # QQ邮箱支持STARTTLS,使用587端口 account qq { set smtp=smtp://smtp.qq.com:587 set smtp-auth=login set smtp-auth-user=user@qq.com set smtp-auth-password=password set ssl-verify=ignore set nss-config-dir=/etc/pki/nssdb set from="user@qq.com" set smtp-use-starttls=yes }
配置文件中定义了两个帐户,发送邮件时可用-A参数指定发信帐户:linux
echo 'mail test for 126' | mail -A 126 -s 'mail test' user@xxx.com echo 'mail test for qq' | mail -A qq -s 'mail test' user@xxx.com
除了配置文件,也能够在命令行中用-S参数进行设置。例如:浏览器
echo 'mail test for command line option' | mail -s 'mail test' -S smtp=smtp://smtp.qq.com:587 -S smtp-auth=login -S smtp-auth-user=user@qq.com -S smtp-auth-password=password -S ssl-verify=ignore -S nss-config-dir=/etc/pki/nssdb -S from="user@qq.com(nickname)" -S smtp-use-starttls=yes user@xxx.com
这种方法比较繁琐,就是将配置文件的每一行都做为选项写在命令中。在程序中调用mail命令发送邮件时能够采起这种方法。安全
# 465端口 echo -n "" | openssl s_client -connect smtp.xxx.com:465 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > xxx.crt # 587端口 echo -n | openssl s_client -starttls smtp -connect smtp.xxx.com:587 | sed -ne '/-BEGIN CERTIFICATE-/,/-END CERTIFICATE-/p' > xxx.crt # 也能够直接在浏览器上打开网页版,保存证书为PEM(base64格式)格式而后上传到服务器
将证书添加到受信任列表:服务器
certutil -A -n 'xxxx' -t "P,P,P" -d . -i ./xxx.crt 上述命令中-A表示添加,-n是nickname,能够随意取,例如126或qq;-t表示受信任的标签,可取值是t/c/p三种或者其组合;-d表示证书所在目录,-i指示证书文件的位置。 在配置文件中更改证书目录: # 指向证书文件目录 set nss-config-dir=/path/to/cert-dir
许多-t标签都是"C,,",实践中发现使用该标签仍会报错。网络
使用"P"标签完美解决,再发邮件就没有报错了。工具