您现在的位置是:技术博客 > 服务器服务器 sendmail邮件服务器 Lucas2020-08-20 20:52【代码】861人已围观 简介Sendmail作为一种免费的邮件服务器软件,已被广泛的应用于各种服务器中,它在稳定性、可移植性、及确保没有bug等方面具有一定的特色。 sendmail是linux系统中一个免费、轻量级、命令行的SMTP邮件客户端。 #### 一、安装sendmail ``` yum install -y sendmail yum install -y sendmail-cf // 启动saslauthd服务进行SMTP验证 service saslauthd start ``` #### 二、修改邮件服务配置 ``` vim /etc/mail/sendmail.mc ``` 1、将sendmail.mc文件下面两行配置开启(去掉dnl注释符) ``` TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl ``` 2、设置网络访问权限 ``` // 将127.0.0.1改成 0.0.0.0,意为任何主机都可以访问,或者特定的网段,例如192.168.1.0/24 DAEMON_OPTIONS(`Port=smtp,Addr=0.0.0.0, Name=MTA')dnl ``` #### 三、开启服务 ``` service sendmail start service saslauthd restart ``` 提示:如果发现sendmail dead but subsys locked,那就执行"service postfix status"查看postfix是否默认开启了,如果开启的话,就关闭postfix,然后再启动或重启sendmail服务即可。 #### 四、安装mailx ``` yum -y install mailx ``` #### 五、修改mailx的配置文件mail.rc ``` vim /etc/mail.rc ``` 修改如下 ``` # 发件人邮箱 set from=186*****67@163.com # smtp服务器及端口 set smtp=smtps://smtp.163.com:465 # 登录邮箱帐号,不用加@qq.com或者@aliyun.com set smtp-auth-user=186*****67 # smtp服务器的授权密码 set smtp-auth-password=xxxx # ssl的加密证书位置 set nss-config-dir=/root/.certs set smtp-auth=login set ssl-verify=ignore ``` > 提示:ssl的证书的获得可以在ubuntu的操作系统的 ~/.mozilla/firefox/*****.default/(我的是在.mozilla/firefox/r42hpmof.default/(ubuntu16.04.1LTS)),拷贝三个文件cert8.db,key3.db,secmod.db到centos7下的/etc/ssl/certs目录下即可,至于传输文件,可以使用winscp(~是普通用户的根目录,如果没有那3个.db文件,可以试试用那个用户使用自带的火狐浏览器登录一次qq邮箱) 下载163证书 ``` 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 ``` > 提示:注意证书访问权限 #### 六、测试发送邮件功能 ``` // 成功后,邮件会发送到598936602@qq.com的【垃圾箱】一栏中 echo "hello word" | mail -s "mail title" 59*****02@qq.com ``` 下面再提供几种发邮件格式 ``` // 1、发送无主题邮件 mailx test@test.com // 2、带主题邮件 mailx -s "title" test@test.com ``` > 提示:以上第一种和第二种都需要这样操作:然后回车第一行输入抄送(可空),再回车输入第二行内容(可空),再回车输入第三行接着ctrl+d发送邮件 ``` // 3、利用文件作为内容发送 mailx -s "title" < test.txt test@test.com // 4、利用文件作为内容发送(同上) mailx -s "title" test@test.com < test.txt // 5、发送附件 echo "test" | mailx -a "filename" -s "title" test@test.com ``` 测试发送功能时,可能会出现以下问题: 1、报错:Error in certificate: Peer's certificate issuer is not recognized. ``` cd /root/.certs/ ll certutil -A -n "GeoTrust SSL CA - G3" -t "Pu,Pu,Pu" -d ./ -i 163.crt ``` 2、报错:Unexpected EOF on SMTP connection "/root/dead.letter" 11/308 . . . message not sent ``` // 第五步mail.rc的配置中,一定要有set smtp=`smtps://`smtp.163.com:465,中的stemps://信息 ``` 附加:一个监控用户登录的脚本,并登陆者的ip、登录方式,登录用户名发送到test@test.com ``` #!bin/bash loginCO=0 loginCL=who | wc -l#获取已登录用户列表 while true do if [[ "$loginCL" -gt 0 ]];then if [[ "$loginCL" -gt "$loginCO" ]];then #当新获取的用户数比旧用户数要多时 user=$(who | sed -n -e '$p' | awk '{print $1}') #取已登录用户列表的最后一个用户信息 clientNumber=$(who | sed -n -e '$p' | awk '{print $2}') time=$(who | sed -n -e '$p' | awk '{print $3"-"$4" "$5}') ip=$(who | sed -n -e '$p' | awk '{print $6}' | cut -d "(" -f2 | cut -d ")" -f1) echo -e "someone is logging! \nhere are some imformation for it :\n\nUser:$user \nClientNumber: $clientNumber\nTime: $time\nIP:$ip" > /tmp/mail/loginmail mailx -s "logging status" test@test.com < /tmp/mail/loginmail #test@test.com为接受邮件的邮箱 fi fi sleep 3 #等待3秒再次获取已登录用户数,这个时间越短检测成功率越高 loginCO=$loginCL loginCL=\who | wc -l` done ``` 转载:感谢您对Lucas个人博客网站平台的认可,非常欢迎各位朋友分享到个人站长或者朋友圈,但转载请说明文章出处“来源Lucas个人博客”。 很赞哦! ( 0 ) 上一篇:Excel常用的指令 下一篇:腾讯云挂载云盘 相关文章 定时任务 Curl无法发送https请求 Lnmp环境搭建 Windows的cmd指令 点击排行 生活不止眼前的苟且,还有诗和远方 十年一觉电影梦 奥地利基茨比厄尔 禅修治愈身心 自律成就自我 零边际成本社会 Modern PHP 鸟哥的Linux私房菜 本栏推荐 要技术,更要有创意 定时任务 Curl无法发送https请求 Lnmp环境搭建 常用的SQL函数 Windows的cmd指令 ueditor工具栏浮动bug 有趣的js插件 标签云 git laravel swoole javascript vue ajax html css sql linux docker flask django nginx apache thinkphp markdown sublime wechat layui photoshop nodejs mysql windows composer java maven springboot mybatis IDE 猜你喜欢 Swoole 基础篇一(初识) PHP进程管理器 正则的快速上手 Sublime代码格式化 Lnmp环境搭建 高并发库存防控超量 Linux之top命令 常用的SQL函数 站点信息 建站时间:2018-05-01 在线人数:1人 文章统计:263篇 总浏览量:222649次 统计数据:百度统计 个人信息:扫描二维码查看