美文网首页
centos7下mailx安装和设置

centos7下mailx安装和设置

作者: ltfyjwz | 来源:发表于2017-04-01 17:12 被阅读0次

    前记

    • linux下sendmail服务经常会被邮箱认为是垃圾邮件,基本上都不会被邮件服务器接受,我曾经使用过阿里云的邮箱测试过,邮件发过去直接被拒收了,去收信记录查询,显示“发信频率超过限制”.....所以这里介绍一种新的方法发邮件,使用腾讯的smtp服务器发送邮件
    • 还有一点:我自己尝试配置mailx出现了很多问题,google好久才有答案,所以想在这里发这篇文章来帮助那些后面的人,少走一些弯路。
    • 这里需要两个邮箱,一个作为自己服务器发送邮件用(简称邮箱1),一个作为测试发送邮件是否发送成功使用(简称邮箱2)

    centos7下mailx默认已经安装,我们只需要配置,就可使用

    yum install mailx #没有mailx可以使用这个安装
    yum install postfix


    配置文件/etc/mail.rc

    <pre>
    set bsdcompat
    set smtp-use-starttls #启用ssl加密
    set ssl-verify=ignore
    set nss-config-dir=/etc/ssl/certs #ssl的加密证书
    set smtp=smtp.qq.com #smtp服务器地址
    set smtp-auth-user=********* #登录邮箱帐号,不用加@qq.com或者@aliyun.com,等,如此类推
    set smtp-auth-password=********* #smtp服务器的授权密码
    set smtp-auth=login #需要登录认证
    set from=**********@qq.com #发件人
    </pre>

    • 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邮箱)
    • smtp的地址可百度,比如说阿里云的就是smtp.aliyun.com,端口如果有启用ssl加密的设置的话可以不写,如果不启用ssl加密,要写,比如说smtp.aliyun.com非加密就是smtp.aliyun.com:25。
    • smtp服务器的授权码需要登录自己的邮箱(即邮箱1)进行设置那里获得,并非邮箱密码!
      • 简单谈一下ssl加密,如果没有ssl加密,所有的一切邮件数据几乎都是明文发送的,包括发送给smtp服务器的授权码,有点危险,就是为了自己的邮箱帐号的安全,也最好启用ssl加密

    弄好之后可以尝试发送邮件了

    发送邮件有两种方式

    第一种
    <pre><code>mailx test@test.com</code></pre>

    无主题邮件

    第二种
    <pre><code>mailx -s "title" test@test.com</code></pre>

    带主题邮件

    • 第一种和第二种都需要这样操作:然后回车第一行输入抄送(可空),再回车输入第二行内容(可空),再回车输入第三行接着ctrl+d发送邮件
    • 可以加-v 选项来查看执行过程信息,注意:-v要写在-s之前,否者会提示语法错误,其实就是-s 后必须接title,就像这样(smtp-server: 501 Bad address syntax)

    第三种
    <pre><code>echo "test" | mailx -s "title" test@test.com</code></pre>

    利用echo输出的内容作为邮件内容发送,直接就可以发送。

    第四种
    <pre><code>mailx -s "title" < test.txt test@test.com</code></pre>


    <pre><code>mailx -s "title" test@test.com < test.txt</code></pre>

    利用文件作为内容发送

    第五种
    <pre><code>echo "test" | mailx -a "filename" -s "title" test@test.com</code></pre>

    发送附件


    问题

    Error initializing NSS: Unknown error -8015.

    这个错误一开始弄得我很头疼,百度,google都无法搜出解决方案,结果来一个sudo就解决了问题,汗...,就像这样
    <pre><code>sudo mailx -s "title" test@test.com < test.txt</code></pre>
    后来终于明白了,这个问题是因为没办法读取证书文件导致的,因为复制文件的时候需要访问/etc/ssl/certs,需要root权限,所以复制过来的文件的拥有者也是root,而且这几个证书db文件的权限是-rw-------,复制过来拥有者变成root,普通用户连读的权限都没有,所以解决办法有几个

    • 加sudo运行
    • 给普通用户加上读权限(chmod +r ...)
    • 改变证书拥有者(chown 普通用户名:普通用户名 ....)

    附加:一个监控用户登录的脚本,并登陆者的ip、登录方式,登录用户名发送到test@test.com

    <pre><code>
    #!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
    `</pre></code>

    相关文章

      网友评论

          本文标题:centos7下mailx安装和设置

          本文链接:https://www.haomeiwen.com/subject/bkbiottx.html