linuxemail
Ⅰ linux系统下HTML格式邮件发送技术linuxhtml邮件
本文详细介绍Linux系统下,如何使用sendmail实现HTML格式邮件的发送技术。
首先,要实现HTML格式的邮件,在Linux系统下可以使用Seandmail技术,Sendmail是一种邮件代理的工具,可以用来发送邮件。要安装sendmail,需要执行yum install sendmail命令,如果没有安装sendmail,需要先在linux系统下安装再使用。
要发送HTML格式的邮件,需要首先定义Content-Type:text/html头,然后用双引号“将HTML代码放在mail命令下面,如下所示:
mail -s “你的邮件主题” [email protected]
Content-Type:text/html
Hello world!
EOF
另外,如果要添加多个收件人,只需要把收件人的email地址信息,添加到-s参数后面,用逗号分隔。如下所示:
mail -s 你的邮件主题 [email protected],[email protected]
此外,还可以通过脚本技术,自动定时发送HTML格式的邮件,例如:
#!/bin/bash
#定义收件人及主题
MAIL_TO=”[email protected]
SUBJECT=”你的邮件主题”
#定义body部分,注意要定义Content-Type
BODY=
“Content-Type: text/html
Hello world!“
#使用sendmail 命令发送
echo “${BODY}” | sendmail -t “$MAIL_TO” -u “$SUBJECT”
可以定义一下添加一个定时任务,指定定时发送邮件。最后,使用crontab 将脚本添加为定时任务,执行一下命令:
crontab path/to/mail.sh
关于Linux使用sendmail实现HTML格式的邮件发送,基本的步骤就是以上介绍的,整个步骤比较简单,只要掌握了sendmail的基本使用,使用脚本可以实现自动定时发送HTML格式的邮件,及时为用户提供服务。
范文来源:http://www.000kk.com/ckr/ge2_476.html
Ⅱ 到底谁牛 Linux邮件服务器软件比较
几年以前,Linux环境下可以选择 的可以免费邮件服务器软件只有Sendmail,但是由于Sendmail的缺陷,一些开发 者先后开发了若干种其他的邮件服务器软件。当前,运行在Linux环境下免费的 邮件服务器,或者称为MTA(Mail Transfer Agent)有若干种选择,比较常见的有Sendmail、Qmail、Postfix、 exim及Zmailer等等。本文希望通过对几种影响相对来说比较大的主流Linux环境 下的MTA的特点进行阐述,并对其优缺点一一分析比较,使用户在选择Linux 环境下的免费MTA时有一个选择的依据。
一、Postfix
Postfix是一个由IBM资助下由Wietse Venema 负责开发的自 由软件工程的一个产物,其目的是为用户提供除sendmail之外的邮件服务器选择 。Postfix力图做到快速、易于管理、提供尽可能的安全性 ,同时尽量做到和sendmail邮件服务器保持兼容性以满足用户的使用习惯。起初 ,Postfix是以VMailer这个名字发布的,后来由于商标上的原因改名为Postfix。
1.主要设计目标
Postfix工程的目标是实现一个邮件服务器,提供给用户除sendmail以外的选 择。其设计目标包括:
性能: Postfix要比同类的服务器产品速度快三倍以上,一个安装 Postfix的台式机一天可以收发百万封信件。Postfix设计中采用了web服务器的 的设计技巧以减少进程创建开销,并且采用了其他的一些文件访问优化技术以提 高效率,但同时保证了软件的可靠性。
兼容性:Postfix设计时考虑了保持Sendmail的兼容性问题,以使移植变 的更加容易。Postfix支持/var[/spool]/mail, /etc/aliases, NIS, 及 ~/.forward等文件。然而 Postfix为保证管理的简单性,所以没有支持配置文件 sendmail.cf。
安全和健壮性:Postfix设计上实现了程序在过量负载情况下仍然保证程 序的可靠性。当出现本地文件系统没有可用空间或没有可用内存的情况时, Postfix就会自动放弃,而不是重试使情况变的更糟。
灵活性:Postfix结构上由十多个小的子模块组成,每个子模块完成特定 的任务,如通过SMTP协议接收一个消息,发送一个消息,本地传递一个消息,重 写一个地址等等。当出现特定的需求时,可以用新版本的模块来替代老的模块, 而不需要更新整个程序。而且它也很容易实现关闭某个功能。
安全性:Postfix使用多层防护措施防范攻击者来保护本地系统,几乎每 一个Postfix守护进程都能运行在固定低权限的chroot之下,在网络和安全敏感 的本地投递程序之间没有直接的路径—一个攻击者必须首先突破若干个其他的程 序,才有可能访问本地系统。Postfix甚至不绝对信任自己的队列文件或IPC消息 中的内容以防止被欺骗。Postfix在输出发送者提供的消息之前会首先过滤消息 。而且Postfix程序没有set-uid。
2.Postfix的一些特点
支持多传输域:Sendmai支持在Internet, DECnet, X.400及UUCP之间转发消息。 Postfix则灵活的设计为无须虚拟域 (vistual domai)或别名来实现这种转发。但是在早期的发布里仅仅支持STMP和有限度 地支持UUCP,但对于我国用户来说,多传输域的支持没有什么意义。
虚拟域:在大多数通用情况下,增加对一个虚拟域的支持仅仅需要改变一个 Postfix查找信息表。其他的邮件服务器则通常需要多个级别的别名或重定向来 获得这样的效果。
UCE控制 (UCE,unsolicited commercial email): Postfix能限制哪个主机允许通过自身转发邮件,并且 支持限定什么邮件允许接进。Postfix实现通常的控制功能:黑名单列表、RBL查 找、HELO/发送者DNS核实。基于内容过滤当前没有实现。
表查看: Postfix没有实现地址重写语言,而是使用了一种扩展的表查看来实现地 址重写功能。表可以是本地 dbm或 db文件等格式。
3.Postfix体系结构及与Sendmail 的比较
Postfix是基于半驻留,互操作的进程的体系结构,每个进程完成特定的任务,没有任何特定的进程衍生关系(父 子关系)。而且,独立的进程来完成不同的功能相对于“单块”程序具有更好的 隔离性。此外,这种实现方式具有这样的优点:每个服务如地址重写等都能被任 何一个Postfix部件所使用,无须进程创建等开销,而仅仅需要重写一个地址, 当然并不是只有postfix采用这种方式。
Postfix是按照这种方式实现的: 一个驻留主服务器根据命令运行Postfix守护进程,守护进程完成发送或接收网 络邮件消息,在本地递交邮件等等功能。守护进程的数目由配置参数来决定的, 并且根据配置决定守护进程运行的次数(re-used times),当空闲时间到达配置参数指定的限度时,自动消亡。这种方法 明显地降低了进程创建开销,但是单个进程之间仍然保持了良好的隔离性。
Postfix的设计目标就是成为 Sendmail的替代者。由于这个原因,Postfix系统的很多部分,如本地投递程序 等,可以很容易地通过编辑修改类似inetd的配置文件来替代。
Postfix的核心是由十多个半驻留 程序实现的。为了保证机密性的原因,这些Postfix进程之间通过Unix的socket 或受保护的目录之下的FIFO进行通信。即使使用这种方法来保证机密性, Postfix进程并不盲目信任其通过这种方式接收到的数据。
Postfix进程之间传递的数据量是 有限制的。在很多情况下,Postfix进程之间交换的数据信息只有队列文件名和 接收者列表,或某些状态信息。一旦一个邮件消息被保存进入文件,其将在其中 保存到被一个邮件投递程序读出。
Postfix采用一些通常的措施来避 免丢失信息:在收到确认以前通过调用flush和fsync()保存所有的数据到磁盘中 。检查所有的系统调用的返回结果来避免错误状况。
大多数构建邮件服务器者都会选择 sendmail,公平的来讲sendmail是一个不错的MTA(Mail Transfer Agent),最初开发时Eric Allman的设计考虑主要放在了邮件传递的成 功性。不幸的是,Sendmai开发时没有太多的考虑Internet环境下可能遇到的安 全性问题。Sendmail在大多数系统上只能以根用户身份运行,这就意味着任何漏 洞都可能导致非常严重的后果,除了这些问题之外,在高负载的情况Sendmail运 行情况不是很好。
4.安全
Postfix则并一定要以root 的身份运行,而只需要一个主(master)程序以root身份运行,其生成进程来处理 接入、发出及本地邮件投递工作。通过使用一系列模块部件,每个任务由一个单 独的程序来运行(这样使审计变的容易一些)。例如发出邮件被卸载到一个队列目 录,在这里“pcikup”程序取到该邮件然后将邮件传递给“cleanup”程序,其再 将邮件传递给“trivial-rewrite”,其负责处理邮件头,最后若邮件目的是别 的系统则将邮件传递给“smtp”程序。而且相对于Sendmail来说Postfix也更容 易设置chrooted环境。只要简单地通过编辑master.cf(一般位于/etc/postfix 内)文件即可实现,并且Postfix将运行chrooted,以限定在其定义的队列目录之 下(通常位于/var/spool/postfix),同样可以在master.cf中对Postfix的单一模 块设置进程限制。用户可以限制Postfix以哪个用户的身份运行,一般来说是以 “postfix”用户(概念上该用户和Apache的nobody类似)运行,该用户可以访问 特定的队列目录。Postfix其他的主要优点是起配置文件的清晰易懂性。
5.与Sendmail的比较
如sendmail之类的邮件系统 是按照一个"单块"的结构设计实现的,该“单块”程序实现所有的功 能。当然这种结构有利于在系统的不同部分之间共享数据。但是这种结构容易出 现一些致命的错误。而如qmail的邮件系统上使用一种分层次的结构,按照固定 得顺序运行不同功能的子模块进程,执行完毕之后就将其释放。这种方法有良好 的“绝缘”性,但是增加了进程创建开销和进程间通信开销。但是通过合理的规 划子模块进程的运行顺序可以将开销保持在可以接受的范围内。
使用其他的MTA替代Sendmail是一 件非常麻烦的事情,用户往往又要花大量的时间去熟悉新的MTA的配置和使用。 而使用Postfix,你可以利用很多以有的配置文件。如(access, aliases, virtusertable等等),只需要简单的在master.cf中定义一下即可。此 外,Postfix在行为上也很象Sendmail,用户可以使用"sendmail"命令 来启动Postfix。
当然,使用一个软件来替代另外一个软件需要解决特定的问题。部分原因是因为 Postfix的安全特性,在配置Postfix时可能会遇到一些问题。最典型的问题是向 root用户发送邮件。Postfix一般不提高自身的权限(向root用户发送邮件所必须 的)来投递邮件。用户需要在别名文件中为root定义别名,如:"root: someuser"。这同样会对若干个邮件列表模块发生影响,特别是SmartList 。一般来说实现邮件列表最好使用Majordomo,它易于配置。
Sendmail一个很突出的问题就是可 扩展性和性能问题。例如用户若希望每天重新启动Sendmail来实现自动更新配置 文件(如为虚拟主机重定向邮件)就会出现问题。Sendmail生成新的进程来处理发 送和接收邮件,这些进程会一直存在直到传输结束,之后Sendmail才能退出,这 样你的脚本程序将不能正确的重起Sendmail。而对于Postfix,用户则只需要发 出命令"postfix reload"即可,Postfix将会重新加载其配置文件。
另外,对于有数以万计的用户的邮件服务器来说,使用文件来存储如匹配用户发 出邮件地址(例如bob发出的信的发信人修改为)。对于大量用 户来讲,该文件就会变的很巨大,从而影响系统的运行效率。而Postfix则可以 和一个数据库后台集成起来(当前只支持MySQL)来存放其配置信息,数据库方式 要比文件方式在可扩展性方面强大很多。
遵从IBM的开放源代码版权许可证 ,用户可以自由地分发该软件,进行二次开发。其唯一的限制就是必须将对 Postfix做的修改返回给IBM公司。因为IBM资助了Wietse的开发。
6.与Qmail的比较
Qmail的缺点就是配置方式和 Sendmail不一致,不容易维护。而且Qmail的版权许可证含义非常模糊,甚至没 有和软件一起发布。应用作者的话:若你希望分发自己修改版本的Qmail,你必须得到我的许可。
二、Qmail
Qmail是有Dan Bernstein开发的可以自由 下载的MTA,其第一个beta版本0.70.7发布于1996年1月24日,1997年2月发布了 1.0版,当前版本是1.03。
1.Qmail的特点
安全性:为了验证Qmail的安全性,Qmail的支持者甚至出资$1000悬赏寻找 Qmail的安全漏洞,一年以后,该奖金没有被领取,而被捐献给自由软件基金会 。目前,Qmail的作者也出资$500来寻求Qmail的安全漏洞。
速度:Qmail在一个中等规模的系统可以投递大约百万封邮件,甚至在一 台486一天上能处理超过10万封邮件,起支持并行投递。Qmail支持邮件的并行投 递,同时可以投递大约20封邮件。目前邮件投递的瓶颈在于SMTP协议,通过STMP 向另外一台互联网主机投递一封电子邮件大约需要花费10多秒钟。Qmail的作者 提出了QMTP(Quick Mail Transfer Protocol)来加速邮件的投递,并且在Qmail中得到支持。 Qmail的设计目标是在一台16M的机器上最终达到每天可以投递大约百万级数目的 邮件。
可靠性:为了保证可靠性,Qmail只有在邮件被正确地写入到磁盘才返回 处理成功的结果,这样即使在磁盘写入中发生系统崩溃或断电等情况,也可以保 证邮件不被丢失,而是重新投递。
特别简单的虚拟域管理:甚至有一个第三方开发的称为vchkpw的add-on来支持虚 拟POP域。使用这个软件包,POP3用户不需要具有系统的正式帐户。使用ezmlm支持用户自控制的邮件列表功能。
邮件用户和系统帐户隔离,为用户提供邮件帐户不需要为其设置系统帐户 ,从而增加了安全性。
2.Sendmail VS Qmail
首先:sendmail是 发展历史悠久的MTA,当前的版本是8.10.2。当然,Sendmail在可移植性、稳定 性及确保没有bug方面有一定的保证。但是Internet上有很多帖子都是关于如果 攻击Sendmail,这对于管理员来说是一个噩梦。Sendmail在发展过程中产生了一批经验丰富的Sendmail管理员,并且 Sendmail有大量完整的文档资料,除了 Sendmail的宝典: OReillys sendmail book written by Bryan Costales with Eric Allman以外,网络上有大量的tutorial、FAQ和其他的资源。这些大量的文档对于很好的利用 Sendmail的各种特色功能是非常重 要的。但是Sendmai当前来说是一个成熟的MTA。
当然,Sendmail具有一些缺点,其特色功 能过多而导致配置文件的复杂性。当然,通过使用m4宏使配置文件的生成变的容 易很多。但是,要掌握所有的配置选项是一个很不容易的事情。Sendmail在过去 的版本中出现过很多安全漏洞,所以使管理员不得不赶快升级版本。而且 Sendmail的流行性也使其成为攻击的目标,这有好处也有坏处:这意味着安全漏 洞可以很快地被发现,但是同样使Sendmail更加稳定和安全。另外一个问题是 Sendmail一般缺省配置都是具有最小的安全特性,从而使Sendmail往往容易被攻 击。如果使用Sendmail,应该确保明白每个打开的选项的含义和影响。一旦你理 解了Sendmail的工作原理,就Sendmail的安装和维护就变的非常容易了。通过 Sendmail的配置文件,用户实现完成一切可以想象得到的需求。
Qmail是一个选择, 其在设计实现中特别考虑了安全问题。如果你需要一个快速的解决方案如,一个 安全的邮件网关,则Qmail是一个很好的选择。Qmail和Sendmail的配置文件完全 不同。而对于Qmail,其有自己的配置文件,配置目录中包含了5-30个不同的文 件,各个文件实现对不同部分的配置(如虚拟域或虚拟主机等)。这些配置说明都 在man中有很好的文档,但是Qmail的代码结构不是很好。
Qmail要比Sendmail小很多,其缺 乏一些现今邮件服务器所具有的特色功能。如不象Sendmail,qmail不对邮件信 封的发送者的域名进行验证,以确保域名的正确性。自身不提供对RBL的支持, 而需要add-on来实现。,而Sendmail支持RBL。同样Qmail不能拒绝接收目的接收 人不存在信件,而是先将邮件接收下来,然后返回查无此用户的的邮件。Qmail 最大的问题就出在发送邮件给多个接收者的处理上。若发送一个很大的邮件给同 一个域中的多个用户,Sendmail将只向目的邮件服务器发送一个邮件拷贝。而 Qmail将并行地连接多次,每次都发送一个拷贝给一个用户。若用户日常要发送 大邮件给多个用户,使用Qmail将浪费很多带宽。可以这么认为:Sendmail优化 节省带宽资源,Qmail优化节省时间。若用户系统有很好的带宽,Qmail将具有更 好的性能,而如果用户系统的带宽资源有限,并且要发送很多邮件列表信息,则 Sendmail效率更高一些。Qmail不支持.forward(.forward在很多情况下对用户很 有用处);不使用/var/spool/mail,而是将邮件存放在用户home目录。下面是一 些使用Qmail不容易完成的工作,要使用Qmail完成这些工作,可能需要用户自己 动手实现或者使用第三方提供的不够可靠的模块。
Qmail的源代码相对于Sendmail来说要更加容易理解,这对于希望深入到内 部了解MTA机制的人员来说是一个优点。Qmail在安全性方面也要稳定一些。 Qmail 有很好的技术支持,但是没有象Sendmail那样被广泛地应用和大量 的管理员用户群。Qmail的安装不象Sendmail那样自动化,需要手工步骤。而且 Qmail的文档不如Sendmail那样完整和丰富。
Qmail的add-ons比 Sendmail要少一些。一般来说对于 经验稍微少一些的管理员,选择Qmail相对要好一些。 Qmail 要简单一些,而且其特色功能能满足一般用户的需求。Sendmail类似于office套 件,80%的功能往往都不被使用。这就使Qmail在一些场合可能被更受欢迎一些, 其具有一些Sendmail所没有的更流行和实用的特色功能,如:Qmail具有内置的 pop3支持。Qmail同样支持如主机或用户的伪装、虚拟域等等。Qmail的简单性也 使配置相对容易一些。
Qmail被认为相对于Sendmail更加安全和高效,运行 Qmail的一台pentium机器一天可以处理大约 200,0000条消息。
Qmail相对于其他的MTA要简单很多,主要体现在:
(1)其 他的MTA的 邮件转发、邮件别名和邮件列表都是采用相互独立的机制,而qmail 采用一种简单的转发(forwarding)机制来允许用户处理自己的邮件列表
(2)其他的MTA都 提供快速而不安全的方式及慢的队列方式的邮件投递机制;而qmail 发送是由新邮件的出现而触发的,所以其投递只有一种模式:快速的队列方式
(3)其他的MTA实 际上包括一个特定版本的inetd 来监控MTA的 平均负载,而qmail 设计了内部机制来限制系统负载,所以qmail-smtpd 能安全地从系统的inet来 运行sendmail有很多 的商业支持,而且由于大量的用户群,在互联网上有大量的潜在技术支持。而 Qmail只有很有限的技术支持。有家公司提供对Qmail的支 持,该公司同样提供了免费的add-ons,包括一个基于web的管理工具-QmailAdmin及一个通过vpopmail的对虚拟域的支持,甚至具有一个基于web的客户借接口— SqWebMail。
Qmail还具有一些其他的缺憾。如 它不是完全遵从标准,它不支持DSN,作者认为DSN是一个即将消亡的技术,而 Qmail的VERP可以完成同样的工作,而又不象DSN依赖于其他主机的支持。Qmail 另外一个问题是其不遵从支持7bit系统标准,而每次都发送8bit。若邮件接收一 方不能处理这种情况,就会出现邮件乱码的情况。
从安全性来讲,Sendmail要比 Qmail差一些,Sendmail在发展中出现过很多很着名的安全漏洞;而Qmail相对要 短小精悍,但是仍然提供了基本的STMP功能。而Qmail的代码注释要少一些。 Qmail的一个很好的特色是其支持一种可选的基于目录的邮件存储格式,而不是 使用一个很大的文件来存储用户所有的邮件。若用户的邮件服务器进行很多的 POP3服务,则这种邮件存储格式可以提高效率。但是遗憾的是Pine自身并不支持 这种存储格式,如果需要可以使用一些补丁来达到这个目的。
Qmail的优点是:每个用户都可以 创建邮件列表而无须具有根用户的权限,如用户"foo"可以创建名为 foo-slashdot, foo-linux,foo-chickens 的邮件列表,为了提供更好的功能,有一个叫 ezmlm(EZ Mailing List Maker)的工具可以支持自动注册和注销、索引等Majordomo所具有 的各种功能,但是都是CLI驱动的,只需要编辑很少的文件。Qmail非常适合在小 型系统下工作,一般只支持较少的用户或用来管理邮件列表。Qmail速度快并且 简单:Qmail是当你希望安全切容易配置的最佳的选择;Qmail可以在2个小时内 搞定配置,而Sendmail可能在两天内都搞不定。rocketmail internic 等都使用qmail来构建。
三、ZMailer
ZMailer是一个高性能、多 进程的Unix系统邮件程序。 [ a.k.a. MTA per X.400 parlance ],其可以从下面的服务器ftp://ftp.funet.fi/pu b/unix/mail/zmailer/ 自由下载。其也是按照单块模式设计的。如Hotmail等邮件系统就是用Zmailer构建的。
四、Exim
Exim是由Cambridge 大学开发的遵从GPL的MTA,其风格上类似与Smail 3 ,但是比Smail 3更加完善。当前最新版本是3.15。其主站点为。其最大的特点就是 配置简单性,但是其安全性不如Qmail及Postfix。
下面是对几种MTA的特点的比较,综合的来讲,Qmail和 Postfix都是很不错的MTA,选择的标准往往是个人的喜好问题,Postfix发展历史 要比Qmail迟一些。
MTA 成熟性 安全性 特色 性能 Sendmail兼容性 模块化设计 qmail medium high high high addons yes Sendmail high low high low x no Postfix low high high high yes yes exim medium low high medium yes no
当然除了这里介绍的几种MTA以外,还有 Smail, Post.Office, the Sun Internet Mail Server (SIMS), MMDF, CommuniGate, PMDF, Netscape Messaging Server,Obtuse smtpd/smtpfwdd,Intermail,MD Switch等其他商业或者免费的MTA可以选择。
Ⅲ linux mail服务器怎么用
一、概述:
在配置邮件服务器之前,先解释几个概念。
通常使用Email都很容易,但是Internet的邮件系统是通过几个复杂的部分连接而成的,对于最终用户而言,我们熟悉的Outlook,Foxmail等都是用来收信和发信的,称之为MUA:Mail User Agent,邮件用户代理。
MUA并非直接将邮件发送至收件人手中,而是通过MTA:Mail Transfer Agent,邮件传输代理代为传递,Sendmail和Postfix就是扮演MTA的角色。
一封邮件从MUA发出后,可能通过一个或多个MTA传递,最终到达MDA:Mail Delivery Agent,邮件投递代理,邮件到达MDA后,就存放在某个文件或特殊的数据库里,我们将这个长期保存邮件的地方称之为邮箱。
一旦邮件到达邮箱,就原地不动了,等用户再通过MUA将其取走,就是用Outlook,Foxmail等软件收信的过程。
所以一封邮件的流程是:
发件人:MUA --发送--> MTA -> 若干个MTA... -> MTA -> MDA <--收取-- MUA:收件人
MUA到MTA,以及MTA到MTA之间使用的协议就是SMTP协议,而收邮件时,MUA到MDA之间使用的协议最常用的是POP3或IMAP。
需要注意的是,专业邮件服务商都有大量的机器来为用户服务,所以通常MTA和MDA并不是同一台服务器,因此,在Outlook等软件里,我们需要分别填写SMTP发送服务器的地址和POP3接收服务器的地址。
Linux系统下邮件服务器的搭建(Postfix+Dovecot)
对于网站来说,发送各种例如注册通知的邮件是很基本的一个需求,之前我一直用的是腾讯的企业邮箱,感觉挺方便的,直接可以绑定QQ邮箱接收邮件,网站配置一下SMTP也就可以发出邮件。
但是在前几天由于有重要信息需要立即通知用户,所以选择了群发邮件的方式。在当我以为一切都是辣么完美的时候,陆续有用户过来问我什么情况,我都会跟他们说请查收邮件,但是有好几个人说并没有任何
邮件,于是我试着再发一次,结果返回了错误提示。在网上找了下原因,后来看到这个:各大免费邮箱邮件群发账户SMTP服务器配置及SMTP发送量限制情况,才知道是因为发信数量限制了。
所以只好另寻出路了,然后我在知乎上面找到了很多个提供邮件发送的服务商,大概有这些:SendGrid、MailChimp、Amazon SES、SendCloud、Mailgun等等,在看了不少人的建议之后,我选择了Mailgun。
Mailgun注册和配置都挺简单,很快我就成功的发出了第一封邮件,怀着这封欣喜,我又发送了几封邮件,可是悲剧发生在第三封邮件,Mailgun后台有详细的发送记录,这个非常不错,在后台我看到我的邮件被拒收了,原因大概是该服务器IP的发信频率超过腾讯邮箱限制。所以这里就涉及到IP的问题,目前第三方的邮件发送服务普遍都是共享IP(后面还试过SendCloud、),而共享IP并不能确定是否已经达到接收方的数量限制,一旦达到了就无法再发送。这就是说还需要使用独立IP才能保证邮件有较高的到达率,接着就看了各家的独立IP价格,一般都是二十几甚至四十几美刀一个月,这对于我们这种小站长邮件需求不高的来说确实有点贵,买台VPS都不用这个价吧。
经过上面这些折腾,也算明白了如果要想顺畅的发出邮件的话,除了花钱,就只有自己搭建一个邮件服务器了。
好了,下面开始进入正题,教你搭建一个简单的邮件服务器。
用于搭建的服务器信息
阿里云 Centos 6.5 32位
Postfix-2.8.12.tar.gz Postfix MTA(邮件传输代理)
Dovecot-2.1.8.tar.gz IMAP 和 POP3 邮件服务器
Postfixadmin-2.3.5.tar.gz 采用php编写的开源WEB邮箱及域名账号管理工具
Roundcubemail-0.8.1.tar.gz 采用php编写的开源IMAP邮件WEB客户端
安装过程
1.安装Postfix
yum -y install postfix
安装完成还需要替换系统自带的sendmail:
rpm -e sendmail
或者
yum remove sendmail
修改MTA(默认邮件传输代理)
alternatives --config mta
然后直接回车即可。
检查一下是不是已经设置成功了。
alternatives --display mta
第一行可以看到mta的状态。 例如:mat - status is manual.
2.安装Dovecot
yum -y install dovecot
3.配置Postfix
编辑/etc/postfix/main.cf,可以下载下来修改,也可以使用vi进行编辑:
vi /etc/postfix/main.cf
修改如下:
# 75行: 取消注释,设置hostname
myhostname = mail.lomu.me
# 83行: 取消注释,设置域名
mydomain = lomu.me
# 99行: 取消注释
myorigin = $mydomain
# 116行: 修改
inet_interfaces = all
# 119行: 推荐ipv4,如果支持ipv6,则可以为all
inet_protocols = ipv4
# 164行: 添加
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
# 264行: 取消注释,指定内网和本地的IP地址范围
mynetworks = 127.0.0.0/8, 10.0.0.0/24
# 419行: 取消注释,邮件保存目录
home_mailbox = Maildir/
# 571行: 添加
smtpd_banner = $myhostname ESMTP
# 添加到最后
# 规定邮件最大尺寸为10M
message_size_limit = 10485760
# 规定收件箱最大容量为1G
mailbox_size_limit = 1073741824
# SMTP认证
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_local_domain = $myhostname
smtpd_recipient_restrictions = permit_mynetworks,permit_auth_destination,permit_sasl_authenticated,reject
修改好了之后使用/etc/rc.d/init.d/postfix start开启postfix,使用chkconfig postfix on将postfix开机启动。
4.配置Dovecot
修改如下:
[root@mail ~]# vi /etc/dovecot/dovecot.conf
# 26行: 如果不使用IPv6,请修改为*
listen = *
[root@mail ~]# vi /etc/dovecot/conf.d/10-auth.conf
# 9行: 取消注释并修改
disable_plaintext_auth = no
# 97行: 添加
auth_mechanisms = plain login
[root@mail ~]# vi /etc/dovecot/conf.d/10-mail.conf
# 30行: 取消注释并添加
mail_location = maildir:~/Maildir
[root@mail ~]# vi /etc/dovecot/conf.d/10-master.conf
# 88-90行: 取消注释并添加
# Postfix smtp验证
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
[root@mail ~]# /etc/rc.d/init.d/dovecot start
Starting Dovecot Imap: [ OK ]
[root@mail ~]# chkconfig dovecot on
到这里,我们的邮件服务器就已经搭建成功了。
5.域名解析
最后别忘了还需要进行域名解析工作。
添加一个子域名mail,A记录解析到服务器IP。
再添加一个MX记录,主机记录为空,记录值为上面解析的二级域名mail.lomu.me,优先级10。
注意:解析生效可能需要一段时间。
6.防火墙设置
/sbin/iptables -A INPUT -p tcp --dport 25 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 110 -j ACCEPT
/sbin/iptables -A INPUT -p tcp --dport 143 -j ACCEPT
突破封锁25口的转发
/sbin/iptables -t nat -A PREROUTING -p tcp -m tcp --dport 10025 -j REDIRECT --to-ports 25
7.邮箱使用
一切都弄好以后,就可以使用Foxmail等第三方软件来收发邮件了。在这里需要说一下,系统用户就是邮件的用户,例如root,就是一个邮箱用户,邮箱是[email protected],密码就是root的密码,所以需要创建用户,只要使用useradd创建用户,再使用passwd设置密码。
好了,假如我们创建一个admin的用户:
# 创建用户
useradd admin
#设置密码,会要求输入两次密码
passwd admin
接下来登录Foxmail,如图:
点击创建,进入:
这里需要注意,邮件账号是admin,并不是邮箱,另外我们没有配置SSL,所以也不要勾选。 接下来点击创建,如果一切正常的话,你已经成功了。