教你如何配置Ubuntu用于高效、高质量的发送邮件

 

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

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

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

  1. 在邮件收到时,会显示www-data代发的字样,如图所示localhost.localdomian, 很容易被当做垃圾邮件,使得我们的发信质量大大降低
  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

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

修改hosts

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

填写主机名

查看主机名

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

sudo vi /etc/hostname

然后, 重启网络服务

重新加载网络

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

配置sendmail

配置sendmail

 

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

3. 设置php.ini

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

20151205131213

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

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

nginx配置php.ini

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

apache2配置php.ini

我们找到sendmail_path这个key

修改sendmail参数

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

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

对于Nginx服务器:

sudo service php5-fpm restart

对于apache2

sudo service apache2 restart

 

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

 

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

好产品经理具备几大条件

1、洞察人性:洞察是一切产品出生的基础
2、不断试错:不断尝试,反馈,目的就是找准体位。
3.1、简单化:不要挑战用户的耐性,真的没时间理你。
3.2、快乐化:制造用户的快感,才能分享你,才能长久的玩耍。
3.3、实用化:满足用户需求并形成习惯,不要脱离商业本质。
4、具有高情商:如果干菊花没有遇到凡士林是多么痛苦的一件事。
5、团队的安全卫士:做好团队的优化的同时必须优化提升自己。

十二五国家自主创新能力建议规则 摘要

面临形势:

“十二五”是我国建设创新型国家的关键时期,全面建成小康社会、加快转变经济发展方式对自主创新能力建设提出了更高、更紧迫的要求。
1.加强创新能力建设是提升国家竞争力的迫切要求。国际金融危机影响深远,主要国家纷纷调整创新战略,不断优化创新政策环境,加大创新基础设施建设投入,世界进入依靠创新繁荣实体经济的深度调整期。创新全球化加速了人才、技术等创新要素的国际流动,为各国提升创新能力带来了重大机遇和严峻挑战。要在全球经济大调整、大变革中掌握主动权,必须加快提升创新能力,抢占科技发展制高点,构筑国际竞争新优势。
2.加强创新能力建设是实现重大科技突破的重要举措。当前,能源资源、信息通信、人口健康、现代农业和先进材料等关系现代化建设进程的重要领域正孕育革命性突破,将催生一批战略性新兴产业,引发以绿色、健康和智能为特征的新产业革命,推动产业结构重大调整。要避免与新科技革命和产业革命带来的重大历史机遇失之交臂,必须实现创新能力质的飞跃。
3.加强创新能力建设是加快转变经济发展方式的重要支撑。当前经济、产业的竞争已前移到科技进步和创新能力的竞争,特别是随着我国工业化迅速推进,劳动力、原材料和环境保护等成本持续上升,经济社会发展面临的资源能源和生态环境约束压力进一步加大,迫切需要依靠创新实现转型发展。我国经济总量已跃居世界第二位,主要产业面临由大转强的艰巨任务,迫切需要以提高经济增长质量和效益为中心,强化创新驱动,加快实现产业结构优化升级和经济发展方式转变。

 

制造业创新能力:

加强制造业共性技术创新平台建设。以制造业结构调整和优化升级必需的基础工艺、基础材料、基础元器件、关键零部件和软件系统为重点,集聚、整合产业链各环节的创新资源,创新组织模式,搭建一批关键共性技术研发和工程化平台,为提升制造业新技术和新产品开发能力提供有力支撑。

推动工业化和信息化深度融合。加强生产过程智能化和生产装备数字化应用示范,提升集散控制、数字控制等自动化和信息化技术集成创新能力。推进国家新型工业化产业示范基地建设。实施制造业信息化科技工程。根据行业技术发展要求,培育和发展网络制造等现代制造模式,促进“生产型制造”向“服务型制造”转变。

 

战略性新兴产业创新能力建设重点

节能环保
高效节能、低耗零排、环境安全、资源循环利用。

新一代信息技术
新一代无线通信、卫星移动通信、下一代广播电视网、下一代互联网、云计算、物联网、新型显示技术、半导体照明,信息技术服务。

生物
新药创制、高性能诊疗设备,合成生物与先进生物制造,医药、重要农作物及畜禽、微生物菌(毒)种等基因资源信息库。

高端装备制造
航空产品、卫星载荷研制,智能控制系统、高档数控机床、轨道交通装备、深海运载和探测技术装备、深部矿产资源探测装备。

新能源
新一代核电装备、大型风电机组系统集成及零部件设计试验平台,新型太阳能发电、智能电网、下一代生物燃料、大规模储能。

新材料
新型功能材料、先进结构材料、高性能复合材料、分离膜材料、有机硅材料、纳米材料、共性基础材料。

新能源汽车
插电式混合动力汽车、纯电动汽车、燃料电池汽车、车用动力电池、驱动电机、动力总成、管理控制系统

 

加快发展开放灵活的教育资源公共服务平台,促进优质教育资源普及共享。加大教育信息化培训力度,推广教师信息化教育技术能力标准,加强教师、技术人员和管理人员专业化培训,提高教师应用信息技术的水平。

开发适应多终端共享要求的内容资源、学习工具和资源生成系统,提高教育信息化技术装备水平

2010112557905409

为程序员量身定制的12个目标

 英文原文:12 resolutions for programmers

  对程序员们来说挑战自我非常重要,要么不断创新,要么技术停滞不前。新年伊始,我整理了 12 个月的目标,每个目标都是对技术或个人能力的挑战,而且可以年复一年循环使用。

  接下来我会对这些建议逐个介绍。

变得有耐心

  程序员们会担心锻炼耐心付出的努力得不到应有的回报。其实,培养耐心只要付出很小的投入就能够得到相对而言很大的收获。下面是开始锻炼耐心可以尝试的一个列表,只要全身心投入其中任意一项,都可以在一个月左右脱离门外汉(成为有经验的新手)的阶段:

  • 烹饪
  • 徒步
  • 滑雪
  • 天文
  • 慢跑
  • 木工
  • 武术
  • 舞蹈

保持健康

  程序员通常久坐少动,因此在日常工作中会面临健康问题,但通常都被我们忽略了。一年中花整整一个月来调整你的生活习惯、饮食和生活环境,这会促使你养成持久、健康的生活习惯。每年去一趟诊所检查血压、胆固醇和血糖,看看这些指标最近有什么变化。如果你的手腕开始疼痛或者已经疼了很久,马上停掉手上的工作开始与“鼠标手”(重复性劳损)作战。注意你的坐姿,尤其是肩膀和脖子。我使用了矫姿器来帮助治疗。

  跟踪你的体重、摄入以及燃烧的卡路里。如果有必要,可以改变生活方式以养成健康的饮食习惯和减肥

拥抱变化带来的不适

  在我 20 刚出头的时候,通过观察身边年纪稍大一些的伙伴我发现有些人停滞不前而另一些则活力充沛,我试着寻找背后的原因。答案就是舒适感。舒适会让技术停滞不前。当找到一个能够为我所用的系统时,我们会一直使用它。但技术是不断进步的,而那些停留在舒适区的人永远不会意识到这些进步能够为他们带来好处。不破不立,要让自己适应不舒适的感觉。

  下面列出的事情一开始可能会让你感到不适应:

  • 使用德沃夏克键盘
  • 使用 vim 替代 emacs,反之亦然
  • 不使用鼠标
  • 使用不同的窗口管理器
  • 喝清咖啡不加奶油和糖,或者喝清茶
  • 尝试一个月“流行且无聊的新事物”
  • 一个星期中有一天不开手机
  • 学习使用一种可以单手输入的设备
  • 尝试一个不同的操作系统
  • 一个星期中有一天不上网
  • 试着对饮食加以限制:尝试吃素,成为纯素食主义者,不吃乳制品,等等
  • 每天吃一种你不喜欢的食物
  • 将你习惯使用的胳膊用绷带绑起来
  • 学习用你不习惯的那只手写字
  • 开一个博客
  • 参加公共演讲
  • 一个月听一种你不喜欢的音乐
  • 去医院或退休家庭护理做志愿者
  • 一个星期有一天快生活
  • 去一个与自己文化或语言不同的国家旅行
  • 读一篇广受好评但却不是你喜欢题材的小说
  • 看一场广受好评但却不是你喜欢风格的电影或演出
  • 学会用变速杆(手动)开车
  • 反对你相信的一些事情

  在一个月的尝试之后,你可以决定是否继续采用新方式,或者找到新方式中好的经验与原有方式的结合点。例如,在我从使用了 10 年的 emacs 转向 vim 时,我会为插入模式设置 emacs 风格快捷键从而继续使用 vim。

学习一门新的编程语言

  编程语言起起落落。如果只了解一门语言,程序员的解决问题能力以及职业前景都会因此受到限制。花上整整一个月时间吸收一门新语言或者一个新的编程范式,并用它写一个小程序。

  下面是一些可以学习但不是非常主流的编程语言:

  如果你无所不知,那么你可以实现一门新的编程语言

自动化

  程序员拥有最强大的待开发技能就是将虚拟和现实自动化的能力。如果你从来没有造过一个机器人,那么去做一个吧。至少学会使用 Lego Mindstorms 或者玩一玩 Arduino board

  检查一下你每天的任务,看看其中有哪些可以完全或者部分自动化。自动化在家庭生活里已经有了长足的进步,甚至可以像 Insteon 那样对系统进行 DIY。

  投资一个月的时间来进行自动化:

  • 调整你的邮箱过滤器或者设置 procmail
  • 为频繁进行的工作编写自动化 shell脚本
  • 编写 shell脚本帮助写作
  • 学会如何使用 cron 工具
  • 改造橱柜灯由感应控制
  • 尽可能地用无线替代有线
  • 停止手动同步:将信息存到云端
  • 安装一个远程控制音频系统
  • 通过你的服务器控制家里的空调
  • 安装数字监控摄像头
  • 安装数字内部通话系统,儿童监控系统
  • 让咖啡机自动打开
  • 为宠物安装自动给水槽
  • 为宠物安装自动感应门
  • 将 Roomba 改造成个人信使

  译注:

  procmail:procmail 软件包包含一个自动的邮件管理器,可以很好的过滤和排序邮件。

  cron:linux 下的定时执行工具。

  Roomba:Roomba 是 iRobo 公司生产的定时智能机器人。

学习更多数学知识

  计算机科学本质上讲是数学的一个学科。好的数学家中间会产出优秀的程序员。不要让你的数学能力丧失殆尽。

  考虑每年花一个月时间复习列表中的一项:

关注安全

  很少有程序员具备好的安全习惯。如果你对自己的数字安全很在意,你就会对你写的代码安全性更加关心。确保你在每个站点都使用了唯一的高安全系数密码。使用加密的密码管理器来管理你的密码,例如 PasswordSafe 或者 KeePassX。如果你还没有对整个磁盘加密,留出时间完成它。(在 Mac 上可以轻松完成)

  每年都要研究过去 12 个月中前 10 位的安全漏洞。他们是如何发生的?在编程中需要怎么做能够避免在你的代码中出现这些漏洞?

  下面是另外一些你需要尝试的安全任务:

  • 在 Apache 中加入 SSL 验证
  • 使用RSA 或 AES 实现密码系统
  • 试着破译你的无线网络密码
  • WireShark 侦听你的网络通讯
  • 设置基于密钥的无密码 ssh 登录
  • 自己运行 nmap;配置你的防火墙
  • 建立端口扫描
  • 为 USB 驱动器加密
  • 监控日志文件
  • 设置 cron 任务定期更新你的程序

  译注:

  nmap:linux 下的网络扫描和嗅探工具包

备份你的数据

  每年花一些时间检查你的备份策略。

  花一个月时间将备份花费的时间减到最小。

  使用基于云的备份服务,比如 MozyCarbonite,很容易建立无缝自动备份。

  更全面地防御可以选择为每个人分发硬盘,对每台电脑使用像 Time Machine 这样的自动备份工具进行备份。

  对重要文件使用异地远程仓库进行版本控制。

学习更多理论知识

  计算机科学有丰富的理论基础。

  了解最新进展的同时还要加强对经典开发理论的掌握。

  每年在下列主题上花一个月时间:

  • 形式语言
  • 自动机与可计算性理论
  • 计算复杂性理论
  • 形式化方法
  • 语义学
  • 算法与数据结构

  译注:

  形式语言:按一定规律构成的句子或符号串的有限或无限的集合。

  自动机:是有线状态机(FSM)的数学模型。

  可计算性理论:研究计算的可行性和函数算法的理论。又称算法理论。它是算法设计与分析的基础,也是计算机科学的理论基础。

  计算复杂性理论:计算复杂性理论是理论计算机科学的分支学科,使用数学方法对计算中所需的各种资源的耗费作定量的分析,并研究各类问题之间在计算复杂程度上的相互关系和基本性质,是算法分析的理论基础。

  形式化方法:在逻辑科学中是指分析、研究思维形式结构的方法。

  语义学:研究自然语言中词语意义的学科。也可以指对逻辑形式系统中符号解释的研究。

  对于刚起步的程序员,可以先看一看下列文章:

  译注:

  CEK:CEK 机器是由 Matthias Felleisen 和 Dan Friedman 开发的λ-演算的力学模型。

  Haskell:一种纯函数式编程语言,以美国数学家 Haskell Brooks Curry 命名。

接触艺术和人文

  工程师往往轻视艺术。他们没有意识到艺术和人文是基础升华的重要因素。史蒂夫·乔布斯乐于指出将技术与人文结合的重要性,事实也却是如此。

  艺术和设计原则同样适用于人和计算机之间的交互。不要忽视这些原则。艺术和人文的训练让直觉更加敏锐,而这方面的练习是难以用数字来计量。工程师需要知道如何衡量那些他们不能计量的事物,而不是只是统计他们可以计量的内容。

  每年至少有一个月学习下面列出的主题:

  • 工业设计
  • 哲学
  • 摄影
  • 绘画
  • 素描
  • 音乐及音乐理论
  • 电影
  • 文学

  社会科学同样会对计算机科学家有很大帮助,尤其是经济学和哲学。

向新的软件学习

  一个为自己的软件寻找灵感的好办法就是向新的或新型应用程序学习。例如,如果你从来没有尝试过 3D 建模软件,可以尝试Blender。抑或是,如果你从来没有接触过 LaTeX,请真诚地试着去了解它。

  在学习过程中,请注意你喜欢什么和讨厌什么。真诚地问自己,这些观察到的内容是否在你的软件中存在。在工作中很难看到自己的缺点,但发现别人的不足却很容易。天下没有哪个父母认为自己的孩子长得难看。请学习看到自己作品的不足。

完成一个自己的项目

  如果你整天为别人写代码,那么为自己写程序能让你记得当初为什么会成为程序员。每年为自己选择的项目分配一个月的时间,完成核心功能,将其开源发布。

  原文:mattmight  编译:敏捷翻译唐尤华