本文首发在: http://mengxi.me/how-to-setup-ubuntu-sendmail-to-deliver-email-fast-and-reliable/

在网站上线后,经常会遇到的一个需求就是发送邮件, 比如注册验证邮件,密码找回邮件等。我尝试过好多方法,其中最简单的方法就是花钱买别人的服务, 比如说国外的mailgun, 国内的sendcloud等, 相比而言, 他们的服务好,只是要花钱, mailgun一个月内小于1w封是免费的, sendcloud一天只能免费发200封, 很多时候这些数字很容易就超了。还有一种方法是注册一个免费邮件,然后通过这个免费邮箱提供的smtp服务发邮件。这种方法的缺点也很明显, 分信量照样限制, 而且,你还得设置发信间隔, 如果一分钟内你发送的量超过一个免费邮箱设定的限值, 你的邮件也发不出去。 所以, 就得找一个更好的, 最好就是能免费的发邮件的方法。

免费的发邮件的方法,现成的有一种, 就是sendmail。 今天要我教大家的也是如何配置,使得我们用sendmail发出的邮件也可以被邮件服务商认为是正常的邮件。

通常通过使用sendmail发出的邮件会有以下几个缺点

  1. 在邮件收到时,会显示www-data代发的字样,如图所示, 很容易被当做垃圾邮件,使得我们的发信质量大大降低
  2. 没有配置的好的情况下, 发送一封信的时间会很长,可达4-5秒的时间,简直不能忍受啊
  3. 被拒绝或者邮件被评为垃圾邮件的可能性很大

因为上面的问题,今天我就教大家如何通过一些配置和操作来使得我们用sendmail发出的邮件速度快, 接收率高。 ps: 本教程是基于 ubuntu 14

1. 先注册一个域名邮箱

要使我们的发信可受信任,就需要用我们的域名做发信箱, 比如说i#mengxi.me这样子的。设置这样的邮箱, 我推荐使用腾讯企业邮箱 http://exmail.qq.com.  虽然他们没有给我钱, ^_^。

可以注册一个免费试用账号:http://exmail.qq.com/signupfree#signup/free

具体的怎么注册,就按他们的提示信息走就好,然后 设置好你的域名解析项,就可以直接使用了。

2. 设置sendmail

先在ubuntu上运行命令 sudo apt-get install sendmail 安装sendmail

安装好sendmail后,再修改hosts文件

确保如下图所示在红圈里加入你的主机名,主机名可以通过命令hostname来获取

如果要修改主机名, 请使用下面的命令:

sudo vi /etc/hostname

然后, 重启网络服务

重启网络服务后,使用命令 sendmailconfig来配置sendmail, 在配置过程中, 对任何的询问都输入Y

到这里我们的sendmail就配置好了,但是,你觉得到这里就完了?不不不!没完, 我们还得设置我们的php

3. 设置php.ini

其实现在php已经能够通过mail函数正常发送邮件了,但是这个时候你发的邮件要很长时间才能到达你的收件箱,且, 邮件会被放到垃圾箱,会有这样的文字, “邮件由www-data@localhost.localdomian代发

相信这也不是你所想要的,接下来我们就通过一个配置来,解决这个问题。

配置你的php.ini. 如果你使用的是nginx的话,配置文件在 /etc/php5/fpm/php.ini

如果是apache2的话,配置文件在/etc/php5/apache2/php.ini

我们找到sendmail_path这个key

在我圈出来的红框里写上你自己的邮箱, 最好是你自己的域名邮箱, 这样更加容易保证发信的成功率。

然后重启php5-fpm ( Nginx ) 或apache2

对于Nginx服务器:

sudo service php5-fpm restart

对于apache2

sudo service apache2 restart

好了, 你现在就可以快速、高效的发送不限数量的邮件了

本文为原创文章, 转载请注明出处, 谢谢!

教你如何配置Ubuntu用于高效、高质量的发送邮件的更多相关文章

  1. 开发环境配置--Ubuntu+Qt4+OpenCV(三)

    同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...

  2. RabbitMQ高级指南:从配置、使用到高可用集群搭建

    本文大纲: 1. RabbitMQ简介 2. RabbitMQ安装与配置 3. C# 如何使用RabbitMQ 4. 几种Exchange模式 5. RPC 远程过程调用 6. RabbitMQ高可用 ...

  3. keepalived安装配置实战心得(实现高可用保证网络服务不间断)

    keepalived安装配置实战心得(实现高可用保证网络服务不间断) 一.准备2台虚拟机     安装的系统是:centos-release-7-1.1503.el7.centos.2.8.x86_6 ...

  4. Docker下配置KeepAlive支持nginx高可用

    案例子任务一.安装配置keepalived 步骤1:使用nginx镜像生成nginx-keep镜像 1) 启动nginx容器并进入 docker run -d --privileged nginx / ...

  5. Postgresql 简单配置 (ubuntu server 14.04.3)

    安装和配置 ubuntu server 已经自动安装了progresql,故安装步骤就省略 初始postgresql没有密码,不能使用,需要先设置密码,命令(从网上随意找的)如下: sudo su p ...

  6. 手动配置Ubuntu Linux系列3-缺省网关和主机名

    上一篇讲到[原创]手动配置Ubuntu Linux的DHCP客户端,这里再说一下配置静态IP地址的方法.   仍然是编辑 interfaces文件.   $ sudo vi /etc/network/ ...

  7. 开发环境配置--Ubuntu+Qt4+OpenCV(一)

    同系列的文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV( ...

  8. 开发环境配置--Ubuntu+Qt4+OpenCV(二)

    同系列文章 1. 开发环境配置--Ubuntu+Qt4+OpenCV(一) 2. 开发环境配置--Ubuntu+Qt4+OpenCV(二) 3. 开发环境配置--Ubuntu+Qt4+OpenCV(三 ...

  9. StarSpace是用于高效学习实体向量的通用神经模型

    StarSpace是用于高效学习实体向量的通用神经模型,用于解决各种各样的问题: 学习单词,句子或文档级嵌入. 文本分类或任何其他标签任务. 信息检索:实体/文件或对象集合的排序,例如 排名网络文件. ...

随机推荐

  1. linux移动硬盘unmount报错处理

    备份数据用的移动硬盘unmount时报: 通过fuser命令来kill掉设备进程,再unmount移动设备 先看fuser命令帮助信息: [root@athenadb2 ~]# fuser -help ...

  2. BZOJ 1855 [Scoi2010]股票交易 ——动态规划

    DP方程是比较简单的,主要有三种:什么都不做.买入.卖出. 发现买入卖出都是$\Theta (n^3)$但是转移方程都是线性的,而且决策和当前的情况是分开的. 所以可以单调队列优化. 复杂度$\The ...

  3. OTOCI(bzoj 1180)

    Description 给出n个结点以及每个点初始时对应的权值wi.起始时点与点之间没有连边.有3类操作: 1.bridge A B:询问结点A与结点B是否连通.如果是则输出“no”.否则输出“yes ...

  4. solr学习0

    solr中文网,solr教程1,solr教程2,solr教程3 solr界面使用:文章1 windows安装solr:文章1,文章2 solr集群:文章1

  5. CKeditor如何实现图片上传功能

    http://makaiyuan.blog.51cto.com/5819595/1049521 如何在数据库中导入excel文件内的数据:http://jingyan.baidu.com/album/ ...

  6. python type()函数

    我怎么把一个变量的类型写入文件?a = 3type(a)貌似返回的是type类型,不能打印,也不能用文件的write怎么半,或者怎么转换成srt之类的? type()函数得到的是一个类型而不是字符串, ...

  7. Head first python前六章小结

    看这本Head first python已经有十几天了,到第七章开始讲Web开发.移动应用开发,后半年我主要是想往后端的方向发展,所以这本书暂时告一段落.这篇博客没有太多的注释,主要是内容比较简单,只 ...

  8. Java程序的编译过程?由.java 到.class的过程?

    Javac是一种编译器,它的任务就是将Java源代码语言转化为JVM能够识别的一种语言,然后由JVM将JVM语言再转化成当前这个机器能够识别的机器语言 词法分析器:读取源代码,一个字节一个自己的读取出 ...

  9. 设计模式之装饰(Decorator)模式

    设计模式之装饰(Decorator)模式 (一)什么是装饰(Decorator)模式 装饰模式,又称为包装模式,它以对客户端透明的方式扩张对象的功能,是继承关系的替代方案之一. 装饰模式可以在不使用创 ...

  10. 你还在为移动端选择器picker插件而捉急吗?

    http://www.cnblogs.com/jingh/p/6381079.html 开题:得益于项目的上线,现在终于有时间来写一点点的东西,虽然很浅显,但是我感觉每经历一次项目,我就学到了很多的东 ...