廖雪峰历时3个月打磨出价值1980的数据分析教程,终终终于免费啦!

文章目录
  1. 1. 一、教程内容
  2. 2. 二、操作步骤
    1. 2.0.0.1. 腾讯云添加A和MX记录
  • 3. 四、我为什么没发成功
    • http://www.bewindoweb.com/127.html

      一、教程内容

      备份了mysql数据库内容后,想让它定时发送到QQ邮箱进行备份,所以用了sendmail,这里仅介绍如何配置,没有发送成功,原因是腾讯云封禁了25端口。

      操作系统:debian 8.9

      二、操作步骤

      1、安装sendmail-bin

      apt-get install sendmail-bin

      如果不装这个会报错:

      下列软件包有未满足的依赖关系:
      sendmail : 依赖: sendmail-bin 但是它将不会被安装
      
      E: 无法修正错误,因为您要求某些软件包保持现状,就是它们破坏了软件包间的依赖关系。

      2、安装sendmail

      apt-get install sendmail

      期间报错,但是没有管,因为不需要php发送邮件。

      正在设置 php7.0-fpm (7.0.24-1~dotdeb+8.1) …
      NOTICE: Not enabling PHP 7.0 FPM by default.
      NOTICE: To enable PHP 7.0 FPM in Apache2 do:
      NOTICE: a2enmod proxy_fcgi setenvif
      NOTICE: a2enconf php7.0-fpm
      NOTICE: You are seeing this message because you have apache2 package installed.
      Job for php7.0-fpm.service failed. See ‘systemctl status php7.0-fpm.service’ and ‘journalctl -xn’ for details.
      invoke-rc.d: initscript php7.0-fpm, action “restart” failed.

      在处理时有错误发生:
      php7.0-fpm
      E: Sub-process /usr/bin/dpkg returned an error code (1)

      3、修改主机名

      vi /etc/hostname

      输入内容

      bewindoweb.cn

      使其快速生效(F要大写)

      hostname -F /etc/hostname

      查看是否生效

      hostname
      提示:bewindoweb.cn

      4、添加域名解析A记录和MX记录(我的是腾讯云),等待生效。

      腾讯云添加A和MX记录

       主机记录记录类型 线路类型 记录值MX优先级 
       mail默认 我的服务器ip 
       @MX默认  mail.bewindowb.cn 5

      5、修改/etc/mail/sendmail.mc

      vi /etc/mail/sendmail.mc

      默认情况下,sendmail只支持本地,我开始发了一封就发现分给了自己……因此要修改sendmail.mc的这一行(port为stmp),将127.0.0.1改为0.0.0.0:

      DAEMON_OPTIONS(Family=inet,&nbsp;&nbsp;Name=MTA-v4,&nbsp;Port=<font color="#46acc8">smtp</font>,&nbsp;Addr=<font color="#f9963b">0.0.0.0</font>′)dnl</code></pre><p>在末尾加入:</p><pre><code class='prettyprint lang-c linenums'>MASQUERADE_AS(<font color="#f9963b">bewindoweb.cn</font>)dnl
      FEATURE(masquerade_envelope)dnl
      FEATURE(masquerade_entire_domain)dnl
      MASQUERADE_DOMAIN(<font color="#f9963b">bewindoweb.cn</font>)dnl</code></pre><p>6、执行命令:</p><pre><code class='prettyprint lang-c linenums'>m4 /etc/mail/sendmail.mc &gt; /etc/mail/sendmail.cf</code></pre><p>这时可能出现:</p><pre><code class='prettyprint lang-c linenums'>*** ERROR: FEATURE() should be before MAILER()
      *** MAILER(local’) must appear after FEATURE(always_add_domain')*** ERROR: FEATURE() should be before MAILER()
      *** MAILER(local’) must appear after FEATURE(allmasquerade')*** ERROR: FEATURE() should be before MAILER()
      *** ERROR: FEATURE() should be before MAILER()
      *** ERROR: FEATURE() should be before MAILER()</code></pre><p>找到<code>/etc/mail/sendmail.mc</code>中的以下内容,放到文档的最后,再重新执行m4命令,就不会出现问题了。</p><pre><code class='prettyprint lang-c linenums'>MAILER_DEFINITIONS
      MAILER(local’)dnl
      MAILER(`smtp’)dnl

      7、把需要发送的邮件的域放进access

      vi /etc/mail/access

      内容加入:

      163.com        RELAY
      qq.com RELAY
      gmail.com RELAY

      生成access.db文件:

      makemap – v hash /etc/mail/access.db < /etc/mail/access

      8、重启sendmail

      service sendmail restart

      查看状态:

      netstat -tlunp | grep 25
      提示:tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN 6269/sendmail: MTA:

      或者:

      service sendmail status
      提示:
      ● sendmail.service - LSB: powerful, efficient, and scalable Mail Transport Agent
      Loaded: loaded (/etc/init.d/sendmail)
      Active: active (running) since 四 2017-12-07 21:37:13 CST; 27min ago
      Process: 12002 ExecStop=/etc/init.d/sendmail stop (code=exited, status=0/SUCCESS)
      Process: 12033 ExecStart=/etc/init.d/sendmail start (code=exited, status=0/SUCCESS)
      CGroup: /system.slice/sendmail.service
      ├─ 6522 sendmail: MTA: ./vB7CbI1x006520 163mx02.mxmail.netease.com.: user open
      ├─12078 sendmail: MTA: accepting connections
      └─13839 sendmail: MTA: ./vB7DaUiS011921 mx1.qq.com.: user open<br></code></pre><p>9、发送邮件</p><pre><code class='prettyprint lang-c linenums'>echo "<font color="#f9963b">测试内容</font>" | mail -s "<font color="#f9963b">测试标题</font>" -a <font color="#f9963b">附件.txt</font> <font color="#f9963b">12345678</font>@qq.com</code></pre><pre><code class='prettyprint lang-c linenums'>mail <font color="#f9963b">12345678</font>@qq.com -s "<font color="#f9963b">主题</font>" &lt; <font color="#f9963b">邮件内容.txt</font></code></pre><h1>三、其他相关内容</h1><p>0、一些解释</p><p>sendmail.cf:sendmail核心配置文件</p><p>sendmail.mc:sendmail提供sendmail文件模板,通过编辑此文件后再使用m4工具将结果导入sendmail.cf完成配置sendmail核心配置文件,降低配置复杂度</p><p>access.db:用来设置sendmail服务器为哪些主机进行转发邮件,位于/etc/mail/access.db&nbsp;<br></p><p>aliases.db:用来定义邮箱别名,位于/etc/mail/aliases.db</p><p>MUA:邮件用户代理(Mail User Agent)</p><p>MTA:邮件传输代理(Mail Transfer Agent)</p><p>MDA:邮件递送代理(Mail Delivery Agent)</p><p>1、查看邮件队列滞留情况:</p><pre><code class='prettyprint lang-c linenums'>sendmail -bp</code></pre><p>或者:</p><pre><code class='prettyprint lang-c linenums'>mailq</code></pre><p>2、删除邮件队列:<br></p><pre><code class='prettyprint lang-c linenums'>cd /var/spool/mqueue
      
      rm -rf *

      3、查看邮件:

      mail
      查看邮件:enter
      退出:exit

      4、强制送信

      对MTA队列强制送信:sendmail -q -v
      对MSP队列强制送信:sendmail -q -v -Ac

      四、我为什么没发成功

      sendmail -bp发信的状态提示是:

      (Deferred: Connection timed out with mx1.qq.com.)

      于是查到可能是安全组设置没有开放25端口,于是去腾讯云面板查看发现:

      注意:为了提升腾讯云IP地址发邮件的质量,将默认限制云主机TCP25端口连接外部地址。您申请自动解封:鼠标移动到导航栏-帐号-25端口解封。

      看了《云主机 TCP 25 端口出方向被封禁?》这篇官方文档,发现:

      <bhelvetica neue’,=”” helvetica,=”” ‘pingfang=”” sc’,=”” 微软雅黑,=”” tahoma,=”” arial,=”” sans-serif;=”” font-size:=”” 14px;=”” font-style:=”” normal;=”” font-variant:=”” letter-spacing:=”” line-height:=”” 30px;=”” orphans:=”” auto;=”” text-align:=”” start;=”” text-indent:=”” 0px;=”” text-transform:=”” none;=”” widows:=”” word-spacing:=”” -webkit-text-stroke-width:=”” 0px;”=””>如果您发起解封申请,腾讯云将默认您已确认并承诺:保证 TCP 25 端口仅用来连接第三方的 SMTP 服务器<spanhelvetica neue’,=”” helvetica,=”” ‘pingfang=”” sc’,=”” 微软雅黑,=”” tahoma,=”” arial,=”” sans-serif;=”” font-size:=”” 14px;=”” font-style:=”” normal;=”” font-variant:=”” font-weight:=”” letter-spacing:=”” line-height:=”” 30px;=”” orphans:=”” auto;=”” text-align:=”” start;=”” text-indent:=”” 0px;=”” text-transform:=”” none;=”” white-space:=”” widows:=”” word-spacing:=”” -webkit-text-stroke-width:=”” display:=”” inline=”” !important;=”” float:=”” background-color:=”” rgb(247,=”” 247,=”” 247);”=””>,并从第三方的 SMTP 服务器向外发邮件。如发现您使用申请的 IP 直接通过 SMTP 发送邮件,腾讯云有权永久性封禁 TCP 25 端口,并不再提供解封服务,如有其它问题,请提 工单申请。

      厉害了我的腾讯云,阿里云也是一样���。查到的一篇解决方法:《阿里云服务器不能发邮件,禁用25端口的解决办法》,以后再继续弄,php代码如下:

      <?php
      header(“content-type:text/html;charset=utf-8”);
      include(“/PHPMailer/class.phpmailer.php”);
      include(“/PHPMailer/class.smtp.php”);

    $mail = new PHPMailer(true);
    $mail->IsSMTP();
    $mail->CharSet=’UTF-8’; //设置邮件的字符编码,这很重要,不然中文乱码
    $mail->SMTPAuth = true; //开启认证
    $mail->SMTPSecure = ‘ssl’;//设置使用ssl加密方式登录鉴权
    $mail->Port = 465;
    $mail->Host = “smtp.163.com”;
    $mail->Username = “邮箱名”;
    $mail->Password = “授权码”;
    //$mail->IsSendmail(); //如果没有sendmail组件就注释掉,否则出现“Could not execute: /var/qmail/bin/sendmail ”的错误提示
    $mail->AddReplyTo(“邮箱名”,”mckee”);//回复地址
    $mail->From = “邮箱名”;
    $mail->FromName = “www.phpddt.com”;
    $to = “收件人”;
    $mail->AddAddress($to);
    $mail->Subject = “本测试标题”;
    $mail->Body = “<h1>phpmail演示</h1>这是php点点通(<font color=red>www.phpddt.com</font>)对phpmailer的测试内容”;
    $mail->AltBody = “To view the message, please use an HTML compatible email viewer!”; //当邮件不支持html时备用显示,可以省略
    $mail->WordWrap = 80; // 设置每行字符串的长度
    //$mail->AddAttachment(“f:/test.png”); //可以添加附件
    $mail->IsHTML(true);
    if(!$mail->Send())
    {
    echo “邮件发送有误 <p>”;
    echo “邮件错误信息: “ . $mail->ErrorInfo;
    exit;
    }
    else {
    echo “邮件发送成功!<br />”;
    }
    ?>

    其实也就在配置里加了
    $mail->SMTPSecure = ‘ssl’;//设置使用ssl加密方式登录鉴权
    $mail->Port = 465;



    科学上网(翻墙)教程!

    更多精彩内容,请扫描二维码关注公众号:轮子工厂,公众号内回复:

    1.回复【图书】:获取15本新手自学编程,零基础入门经典学习教材;
    2.回复【我要造轮子】:获取100多本计算机类经典书籍;
    3.回复【开发工具】:获取几大主流编程语言的开发工具~
    4.回复【内推】:可帮你内推到大厂工作。
    文章目录
    1. 1. 一、教程内容
    2. 2. 二、操作步骤
      1. 2.0.0.1. 腾讯云添加A和MX记录
  • 3. 四、我为什么没发成功