热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Qmail知识库专栏导读

Qmail知识库专栏导读--Linux企业应用-Linux服务器应用信息,下面是详情阅读。
编者案:

在知识库贴了几十篇的Qmail文章,想必大家对这个东东也有一些熟悉了了吧。现在您所看到的资料,基本上是国内站点中能找得到最齐全的。其中的一些内容,还是刚刚从国外权威的专家作品中整合过来的。内容基本上含盖了从Qmail的安装到基本配置,基于复杂网络环境下的系统设定以及少部分二次开发等内容。可以说 ,如果您按照本专栏的几篇文章去安装配置Qmail系统,再参考FAQ里的问题,基本上一般的情况都能应付。

好,让我们言归正状。

首先,我再次不厌其烦的介绍一下qmail。

qmail是为了取代sendmail这样的标准MTA(又叫邮件传输代理)程序而面世的。它的制作目的是,提供一个安全的、稳定的、高效的简洁的电子邮件系统。因为,老式的sendmail有着太多缺陷,尽管它的作者不停的修复。

qmail有哪些优点呢:

*安全---- Qmail将E-mail处理过程分为多个分过程,尽量避免以Root用户身份运行。同时Qmail也禁止对特权用户(Root、Deamon等)直接发信。

  *可靠---- Qmail的直接投递保证了E-mail在投递过程中不会丢失。Qmail同时支持新的更可靠的信箱格式——Maildir,保证系统在突然崩溃情况下不至破坏整个信箱。

  * 高效----运行在奔腾的BSD上,Qmail每天可以轻松地投递20万封电子邮件。

  *简单---- Qmail 要比其他的Internet Mail系统小得多。它通过统一的向前机制完成Forwarding、Alias和Maillist等功能, Qmail使用简单高效队列来处理投递。Qmail-SMTPD可以由Inetd启动,节省了一定资源。

这里给出qmail和其他邮件系统的比较,需要说明的是,A表示特性,B表示易配置度,C表示性能,D表示别名管理能力,E表示兼容性,F表示安全。分数越高说明该项特性越好。综合评分反应了该邮件软件的综合水平。

产品名 评分人数 综合评分 A B C D E F

Exim 79 4.0 3.9 4.1 3.9 3.9 4.0 3.9
IMAP Server 5 2.5 2.8 2.8 2.8 1.8 3.2 1.8
Maildrop 5 1.8 1.8 1.8 1.8 1.8 1.8 1.8
OpenMail 5 2.5 3.8 2.0 1.8 2.6 2.8 2.2
Postfix 24 4.4 4.1 4.7 4.7 4.0 4.4 4.6
qmail 192 4.4 4.3 4.2 4.7 4.4 4.1 4.7
sendmail 191 4.0 4.6 3.0 4.1 4.2 4.6 3.7
smail 17 3.1 2.9 3.3 2.9 2.9 3.4 3.2

评测出自LinuxCare站点,原文请看

该评测是根据网友和软件的用户反映统计出来的,具有一定的代表性。可以看出,qmail和postfix明显具有优势。但是postfix没有提供 pop3的服务。qmail的服务比较齐全。在开发方面,倒是postfix的可扩展性、编程接口比较好。另外,就我了解,硅谷在雇用系统管理人员的时候,对qmail的管理能力要求最多。具备qmail丰富知识的管理员,一般年薪都在10~12万美金左右,很诱人吧!

  qmail由于使用Maildir的形式,避免了NFS中无法对共享文件加锁的限制,使得qmail很容易作大容量的扩展,实现100万级的电子邮件系统。163等国内流行的系统就是这样建立的。它不仅能和数据库作配合,还可以添加LDAP支持,使得qmail有着很长的生命线。

那么要掌握这样一个优秀的系统,首先我们必须学会正确地安装和配置。

qmail安装支持两种模式,不同的模式需要不同的第三方软件包配合:

一、使用Linux系统用户作为邮件帐户,这里有本站点工程师Ideal的精彩文章:

qmail使用系统用户作为邮件账户的安装与配置

当然,这不是使用qmail推荐的方法。一般情况下,尽量使用数据库来支持邮件帐号,所以

二、使用Mysql(典型)支持qmail的邮件帐号设定,这样不但解决了qmail系统帐号的理论上限,还可以很好的支持虚拟主机的配置,做成你自己的ISP电子邮件服务器,很诱人吧。这里有:

ideal大人的作品:通过vpopmail实现qmail邮件账户的数据库管理
本站工程师grind的大作:我的qmail安装历程
以及我的作品:Step yb Step安装qmail全套功略

另外:关于qmail初级安装的文章还有:

Qmail系统的安装、简单配置及使用
Qmail安装及设定
qmail邮件用户与系统用户分开详解

其他平台下的qmail其实和Linux下也没有什么差别,这里有FreeBSD和Solaris的文章:

Solaris2.6下面安装qmail十步搞定
FreeBSD qmail HOWTO for FreeBSD

不过您经过仔细的比较就会发现,过程是一样的。

安装完成以后,并不表示所有的工作就结束了。正确配置你的qmail系统,可以大大提高系统的安全能力。特别是针对SMTP信件滥发、垃圾邮件等问题能在qmail下很好的解决:

我的作品:为Qmail增加smtp用户认证功能

Ideal大人:Qmail邮件系统下防止滥用mail relay完全解决方案

邮件管理篇——VmailMgr

其实,qmail采用了大量的小软件来实现系统的轻载和极大的灵活度。彼此使用UNIX惯用的管道方式来传递消息。也许,这就是qmail会成功的原因。 UNIX就是居于这样的思想才能发展几十年屹立不到的。这一点,sendmail在最初设计的时候就很不妥当了,它把所有的功能都封装在一个程序里,问题也随着软件的使用逐渐暴露出来--紧耦合的结构导致它极难维护和修改。不过,qmail松耦合的结构也不是没有缺点。至少,由于过多的程序导致每个程序都有可能存在未被发现的漏洞,而修补这些漏洞的代价或许也不比单个程序来得低。已知的就有:

cmd5checkpw Qmail 远程密码获取漏洞

vpopmail/vchkpw存在远程溢出漏洞,使入侵者能远程获得root权限

Vpopmail 3.4.11 中的问题

这几个程序都是在配置qmail的用户验证功能时所必须的。建议是,尽快更新你的软件版本。保持对版本的跟踪,必要的话,加入讨论组。

此外,qmail也支持日志管理,在你分析问题的时候,日志文件会是你极有用的助手:

qmail的smtp与pop服务及相关日志完全解决方案

基于qmail的邮件系统管理建议

qmail 还有一大吸引之处就是,它很容在现有的基础上作二次开发,制作web应用。典型的已有的web应用就是qmailadmin软件。这是一个基于web下的 qmail管理器,能够对qmail的帐号、虚拟域名进行可靠管理,这里再次感谢Ideal大人,它为我们qmail的每个栏目都做了很多贡献,包括 qmail的web应用部分和后面要提到的FAQ部分。

ideal的文章:

使用qmailadmin实现qmail邮件账户的web管理之一

使用qmailadmin实现qmail邮件账户的web管理之二

使用vqsignup实现web方式的email账号申请

当然,qmail的web应用还有很多。比如sqwebmail是一个基于qmail的webmail软件,是用php写的,很适合小型企业使用。

讲了那么多的qmail配置,我们要来谈一下qmail的工作原理以及相关的一些知识。

qmail中,核心的技术就是邮件队列的管理功能,请看我的文章

Qmail邮件队列工作原理

对于qmail,IMAP的程序并没有出现在标准的安装包里,因此,使用第三方的IMAP软件也能让qmail成为邮件服务器的全能选手:

邮件存储模式篇——Courier

Qmail支持标准的SMTP协议,还提供了更快的协议--QMTP。这是qmail专用的邮件发送协议,相比之下,有速度更快,更稳定的特点。可以直接代替SMTP监听25端口。它的介绍:

快速邮件传输协议QMTP

这里还提供一个文档,简单说明了qmail各个软件模块。并且以图的形式把qmail的工作流程表示出来。虽然资料是英文的,但我相信绝大多数人都能看懂。

the-big-qmail-picture-103-a4

本专栏还收集了Aid论坛里大量的网友问答集,也参考一些国外的讨论组,总结一些FAQs形式的资料,并作了一些分类:

安装:Qmail安装设定问题集一
qmailadmin安装配置问题集一
qmailadmin安装配置问题集一

配置管理:
Qmail域名相关问题一
Qmail域名相关问题二
Qmail域名相关问题三
Qmail使用SMTP发信的设置问题集一
Qmail用户验证问题集一
QMail管理技巧集一
Qmail中pop3服务设定问题集一
Qmail中设定Maildir相关问题
qmail 自己给自己发邮件需延迟20多分钟才能收到,为什么?

综合技巧:
Qmail技巧与提示
Qmail问题FAQ集锦
开发:
Qmail下建立大容量邮件系统简答

以上就是我们专栏的全部资料,如果发现里面有不正确的地方,希望大家热心指正,也欢迎直接给我来信反映。本来我还打算翻译qmail的“圣经"-- Life With Qmail ,这是一部很不错的文章,还有关于qmail下建立大容量email系统的文章--Life With qmail and LDAP ,以及自己准备整理的qmail下反垃圾邮件的资料。但是时间总是不够用,很抱歉,只好再等一等了。欢迎大家积极把手里的精辟资料贡献出来,壮大我们这个专题,也壮大我们的站点。
推荐阅读
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的详细步骤
    本文详细介绍了搭建Windows Server 2012 R2 IIS8.5+PHP(FastCGI)+MySQL环境的步骤,包括环境说明、相关软件下载的地址以及所需的插件下载地址。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文比较了eBPF和WebAssembly作为云原生VM的特点和应用领域。eBPF作为运行在Linux内核中的轻量级代码执行沙箱,适用于网络或安全相关的任务;而WebAssembly作为图灵完备的语言,在商业应用中具有优势。同时,介绍了WebAssembly在Linux内核中运行的尝试以及基于LLVM的云原生WebAssembly编译器WasmEdge Runtime的案例,展示了WebAssembly作为原生应用程序的潜力。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • 本文介绍了在rhel5.5操作系统下搭建网关+LAMP+postfix+dhcp的步骤和配置方法。通过配置dhcp自动分配ip、实现外网访问公司网站、内网收发邮件、内网上网以及SNAT转换等功能。详细介绍了安装dhcp和配置相关文件的步骤,并提供了相关的命令和配置示例。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • 本文由编程笔记小编整理,介绍了PHP中的MySQL函数库及其常用函数,包括mysql_connect、mysql_error、mysql_select_db、mysql_query、mysql_affected_row、mysql_close等。希望对读者有一定的参考价值。 ... [详细]
  • 本文介绍了Oracle数据库中tnsnames.ora文件的作用和配置方法。tnsnames.ora文件在数据库启动过程中会被读取,用于解析LOCAL_LISTENER,并且与侦听无关。文章还提供了配置LOCAL_LISTENER和1522端口的示例,并展示了listener.ora文件的内容。 ... [详细]
author-avatar
嘿可爱无罪
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有