zoukankan      html  css  js  c++  java
  • 借用smtp.qq.com发邮件

    至于sentmail和postfix的配置有多么麻烦学生在这里就不多废话了...反正是配置了N个小时,最终弄的头晕眼花也没弄好...

    下面的方法可以让你完全摆脱这两个工具...当然,你要是想做邮件服务器的话就令当别论了...你要是只想让服务器自动发个邮件什么的,用下面的就行了

    通常的做法都是,关闭本机的sendmail服务或者postfix服务,

    #执行下面的命令,各位大侠都对号入座吧
    #sendmial
    service sendmail stop
    chkconfig sendmail off
    #postfix
    service postfix stop
    chkconfig postfix off

    #再狠一点就直接卸载吧..

    yum remove sendmail
    yum remove postfix
     然后修改/etc/mail.rc,增加一下类似N行,指定外部的smtp服务器地址、帐号密码等。
    # vi /etc/mail.rc  
    set from=123456@qq.com
    set smtp=smtp.qq.com  
    set smtp-auth-user=123456
    set smtp-auth-password=sbsbsbsb
    set smtp-auth=login

     然后通过命令来发送邮件,echo  hello word | mail -s " title" 123456@qq.com 

    可是发现在RHEL6运行是没有问题,在RHEL5下,mail命令始终是调用本地的sendmail服务来发送邮件的。
    到底RHEL6和RHEL5下的mail和mailx又有着什么关系呢?
    RHEL6下,mail 链接到 mailx 命令,mailx版本为12.4
    # rpm -qa|grep mailx  
    mailx-12.4-6.el6.x86_64  
    # ll /bin/mail*     
    lrwxrwxrwx. 1 root root      5  7月 22 2011 /bin/mail -> mailx  
    -rwxr-xr-x. 1 root root 390424  2月 16 2010 /bin/mailx  
    # mail -V  
    12.4 7/29/08  
    RHEL5下,则发现了一些不同,mailx  链接到  mail 命令,mailx版本为8.1
    # rpm -qa|grep mailx  
    mailx-8.1.1-44.2.2  
    # ll /bin/mail*  
    -rwxr-xr-x 1 root mail 84856 Jun  6  2007 /bin/mail  
    lrwxrwxrwx 1 root root     4 Apr 12 18:03 /bin/mailx -> mail  
    # mail -V     此处运行就会出错,没有-V这个参数  

    也就是说,在RHEL65下,运行mail 和mailx,实际上都是一个命令,而mail版本不同,导致了RHEL5下mail命令无法调用外部SMTP服务器。

    安装mailx新版本可解决此问题。
    下载地址:http://www.filewatcher.com/m/mailx-12.4.tar.bz2.271482.0.0.html

    下载后,# tar jxvf mailx-12.4.tar.bz2 9# cd mailx-12.4# make# make install UCBINSTALL=/usr/bin/install

    查看mailx程序默认安装位置、及版本

    # whereis mailx mailx: /usr/local/bin/mailx /usr/share/man/man1p/mailx.1p.gz # mailx-V  12.4 7/29/08
    安装后的mailx使用的是 /etc/nail.rc 配置,不是 /etc/mail.rc 这个需要注意下。vi编辑,按下G  ,然后在行尾添加如下N行
     # vi /etc/nail.rc  (看出亮点了吗?)
    set from=123456@qq.com
    set smtp=smtp.qq.com 
    set smtp-auth-user=123456 5  set smtp-auth-password=sbsbsbsb
    set smtp-auth=login

    然后通过命令来发送邮件

    echo  hello word | mailx -v -s " title" 123456@qq.com 
     
    服务器状态监控脚本邮件发送问题探究:
    服务器状态文件生成服务器语言:
    [root@VM_174_31 /data/home/report]# echo $LANG
    en_US
    服务器状态处理服务器语言:
    [root@localhost forilen]# echo $LANG
    en_US.UTF-8
     
    邮件发送核心脚本:
    check(){
        srvid=$1
        srvname=$2
        grpname=$3
        root=`cat server_$srvid.txt | awk '{print $9}' | awk -F% '{print $1}' `
        data=`cat server_$srvid.txt | awk '{print $10}' | awk -F% '{print $1}' `
        mysql -uroot -p1234 -e "load data infile '$path/server_$srvid.txt' into table serverdb.server_status;" &>/dev/null
        if [ $root -gt $deadline -o $data -gt $deadline ]
        then
            echo >>mail.log
    #       cat server_$srvid.txt >>mail.log
    #       cat server_$srvid.txt >>mail.txt
            echo -e "$grpname" >./srv_head.txt
            echo -e "$srvname" >>./srv_head.txt
            cat srv_head.txt server_$srvid.txt >>mail.log
            cat server_$srvid.txt |/bin/mail -s "DISKWARMING_$ts_$grpname_$srvname" forilen@dawx.com
     
    #       cat server_$srvid.txt >>./srv_head.txt 
    #       echo "1" >>./srv_head.txt
    #       cat srv_head.txt | /bin/mail -s "DISKWARMING_$ts" forilen@dawx.com
     
        fi
        rm server_$srvid.txt* -f
    }
    由于两个服务器的编码格式不同,导致文件在后面追加的时候出现编码异常,mail无法解析,导致发送异常附件(tcmime.744.744.888.bin)。
    grpname所存数据库编码:
    mysql> show variables like '%char%';
    +--------------------------+-----------------------------------+
    | Variable_name            | Value                             |
    +--------------------------+-----------------------------------+
    | character_set_client     | latin1                            |
    | character_set_connection | latin1                            |
    | character_set_database   | latin1                            |
    | character_set_filesystem | binary                            |
    | character_set_results    | latin1                            |
    | character_set_server     | latin1                            |
    | character_set_system     | utf8                              |
    | character_sets_dir       | /data/mysql/share/mysql/charsets/ |
    +--------------------------+-----------------------------------+
     
    | ser_group | CREATE TABLE `ser_group` (
      `group_id` tinyint(4) NOT NULL auto_increment,
      `group_name` varchar(100) default '0',
      `group_status` tinyint(4) NOT NULL,
      `appid` varchar(20) default NULL,
      PRIMARY KEY  (`group_id`)
    ) ENGINE=InnoDB AUTO_INCREMENT=101 DEFAULT CHARSET=utf8 | 
    解决方案:
    在shell脚本前面加上:export LANG="en_US.UTF-8"
  • 相关阅读:
    vue 实现表格导出Excel
    基于canvas绘制的,Vue 图形验证码组件
    screenfull.js实现全屏功能
    学习笔记-Python基础2-表达式和运算符
    PHP里对数据库增删改查操作
    学习笔记-Python基础1-变量命名和声明、数据类型
    PHP类中的$this、self、parent关键字使用总结
    移动端页面中,有时需要禁止用户滑动屏幕
    正则表达式总结
    input输入框限制各类输入总结
  • 原文地址:https://www.cnblogs.com/forilen/p/4249474.html
Copyright © 2011-2022 走看看