详解postfix邮箱服务器安装、配置及其工作原理(内附源码包)

简介

postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。postfix是Wietse Venema想要为使用最广泛的sendmail提供替代品的一个尝试。在Internet世界中,大部分的电子邮件都是通过sendmail来投递的,大约有100万用户使用sendmail,每天投递上亿封邮件。这真是一个让人吃惊的数字。Postfix试图更快、更容易管理、更安全,同时还与sendmail保持足够的兼容性。

工作原理

客户端通过Outlook软件,向邮件服务器发送一封邮件,邮件服务器会检查是发往本域?还是发往其他域?
1、如果发送到本域,直接存放到Mailbox中,另外一个用户上线,需要收取这封邮件,需要借助dovecot(dovecot提供的是MRA的功能)软件,通过dovecot进入数据库验证身份,验证通过以后,就可以通过MRA调用POP3或者IMAP4的协议,进入邮箱收取邮件,并且将邮件转发给用户
2、如果发送到其他域,其他MTA。但是转发之前,验证用户身份,是否要为其转发邮件,验证的时候是用到了SASL函数库,用户的信息是放到了数据库中,此时我们需要一个中间层authlib,通过authlib替SASL函数库向数据库进行验证,做“发信认证”,认证通过,允许转发,验证不通过,拒绝转发
3、通过浏览器访问邮件服务器(EXtmall),转发到其他域,放到邮箱,到数据库验证

邮件系统角色

MUA:邮件用户代理(客户端 例如微软邮件客户端)
MTA:邮件传输代理(服务器端 postfix)
MDA:邮件分发代理分发邮件(至mialbox中)
MRA:邮件检索代理

邮件应用协议

1、SMTP,简单邮件传输协议,TCP,25端口,加密时使用TCP,465端口(发送邮件)客户端向其他服务器发送邮件或者服务器向其他服务器转发邮件,发送方使用的都是SMTP协议
2、POP3,第3版邮局协议, TCP 110端口,加密时使用TCP 995端口[收邮件 收取邮件的时候,先将服务器的邮件下载到本地,所有的操作都是在本地完成
3、IMAP4,第4版互联网消息访问协议,TCP 143端口,机密时使用993端口(比POP3灵活)接收邮件,客户端和服务器端交互了以后,在服务器端处理,好处能实现更多的功能,例如查看邮件的信息,但是消耗的系统的资越高

实验环境

系统环境:centos6.5
虚拟机IP地址:192.168.1.77
yum挂载目录:/mnt/sr0
DNS域名:bt.com.
源码包下载地址:百度云下载 密码:kv94

搭建步骤:

一、准备工作:

1、关闭selinux、iptables

[[email protected] ~]# vim /etc/sysconfig/selinux

[[email protected] ~]# chkconfig iptables off #开机关闭防火墙服务,永久关闭
[[email protected] ~]# shutdown -r now #重启生效

2、安装依赖包

[[email protected] ~]# yum -y install gcc gcc-c++ #安装编译器
[[email protected] ~]# yum -y install db4-devel #有些机器默认已经安装,注意看下
[[email protected] ~]# cd /mnt/sr0/Packages/
[[email protected] Packages]# rpm -ivh cyrus-sasl-devel-2.1.23-13.el6_3.1.x86_64.rpm

二、指定DNS,实现邮件交换记录

1、安装DNS服务器

[[email protected] ~]# cd /mnt/sr0/Packages/
[[email protected] Packages]# rpm -ivh bind-9.8.2-0.17.rc1.el6_4.6.x86_64.rpm

2、查看网卡信息

[[email protected] ~]# ifconfig

3、修改DNS服务器配置文件

[[email protected] ~]# vim /etc/named.conf #修改主配置文件

4、创建并修改DNS正向解析文件

[[email protected] ~]# cd /var/named/
[[email protected] named]# cp -p named.localhost bt.com.zone #将模板文件改为正向解析文件进行修改
[[email protected] named]# vim /var/named/bt.com.zone # 修改正向解析文件

5、创建并修改DNS反向解析文件

[[email protected] named]# cp -p bt.com.zone 192.168.1.zone
[[email protected] named]# vim 192.168.1.zone

[[email protected] named]# /etc/init.d/named start #启动DNS服务器

6、测试DNS解析

一、源码安装Postfix

1、解压、编译及安装

[[email protected] ~]# tar xvfz postfix-2.11.11.tar.gz -C /usr/src/ #解压
[[email protected] ~]# cd /usr/src/postfix-2.11.11/
[[email protected] postfix-2.11.11]# make makefiles ‘CCARGS=-DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I/usr/include/sasl‘ ‘AUXLIBS=-L/usr/lib/sasl/sasl2 -lsasl2‘
CCARGS:支持SASL认证;
-I:增加一个文件的路径;
AUXLIBS:添加一个函数库的位置,sasl2代表第二个版本

[[email protected] postfix-2.11.11]# postconf -a #查看postfix支持的功能

[[email protected] postfix-2.11.11]# postfix start

2、修改postfix配置文件

[[email protected] ~]# vim /etc/postfix/main.cf
inet_interfaces = all //监听服务的IP地址,有一个默认localhost,修改时候注意下,别忘记
myhostname = mail.bt.com //邮件服务器主机名
mydomain = bt.com //邮件域名
myorigin = $mydomain //发件人地址邮件域名
mydestination = $mydomain, $myhostname //收件人地址邮件域名
home_mailbox = Maildir/ //邮件存放位置

3、重载Postfix服务

[[email protected] ~]# postfix reload #注意:postfix没有重启的命令,只有stop后在start相当于restart,直接reload就可以了,注意有时候不太靠谱,建议先stop、后start

4、添加邮箱测试账号

[[email protected] ~]# groupadd mailusers
[[email protected] ~]# useradd -g mailusers -s /sbin/nologin zhangsan
[[email protected] ~]# passwd zhangsan

[[email protected] ~]# useradd -g mailusers -s /sbin/nologin lisi
[[email protected] ~]# passwd lisi

二、源码安装Dovecot(POP3/IMAP的接收信件的服务器软件)

1、解压Dovecot源码包

[[email protected] ~]# tar xvfz dovecot-2.0.21.tar.gz -C /usr/src/

2、建立系统账户

[[email protected] ~]# useradd -M -s /sbin/nologin dovecot #建立系统用户与postfix关联
[[email protected] ~]# useradd -M -s /sbin/nologin dovenull

3、源码包配置

[[email protected] ~]# rpm -qa |grep pam

[[email protected] ~]# cd /mnt/sr0/Packages/
[[email protected] Packages]# rpm -ivh pam-devel-1.1.1-17.el6.x86_64.rpm

[[email protected] ~]# cd /usr/src/dovecot-2.0.21/
[[email protected] dovecot-2.0.21]# ./configure --sysconfdir=/etc/ --with-pam
sysconfdir:指定配置文档所在目录
with-pam:让其支持pam认证

4、编译及编译安装

[[email protected] dovecot-2.0.21]# make && make install

5、建立配置文件以及添加PAM认证

[[email protected] dovecot-2.0.21]# cp -rf /usr/local/share/doc/dovecot/example-config/* /etc/dovecot/ #一般情况下把所有的配置样例都复制到dovecot目录下
[[email protected] dovecot-2.0.21]# cd /etc/pam.d/
[[email protected] pam.d]# cp login dovecot #复制一个模板,建立配置文件。dovecot是需要pam认证的,需要建立pam文件
[[email protected] pam.d]# ls -l login dovecot

[[email protected] pam.d]# vim dovecot #修改dovecot对应的pam配置文件

6、修改配置文件

[[email protected] pam.d]# cd /etc/dovecot/
[[email protected] dovecot]# vim dovecot.conf
开启protocols = imap pop3 lmtp
修改!include conf.d/10-auth.conf #启动本地系统的账户和密码
添加ssl=no #不使用加密
添加disable_plaintext_auth=no #启用明文认证
添加mail_location = maildir:~/Maildir #设置邮件位置

7、添加系统权限

[[email protected] dovecot-2.0.21]# cd /usr/src/dovecot-2.0.21/doc/
[[email protected] doc]# cp dovecot-initd.sh /etc/init.d/dovecot #将dovecot的启动脚本复制到/etc/init.d/
[[email protected] doc]# chmod a+x /etc/init.d/dovecot #赋予可执行权限
[[email protected] doc]# chkconfig --add dovecot #添加为系统为服务,添加的前提条件/etc/init.d/有dovecot服务脚本

8、启动服务

[[email protected] ~]# service dovecot start

[[email protected] ~]# netstat -anpt | grep dovecot

三、测试收发邮件

[[email protected] ~]# cd /mnt/sr0/Packages/
[[email protected] Packages]# rpm -ivh telnet-0.17-47.el6_3.1.x86_64.rpm #安装telent客户端服务,通过telent命令连接25端口进行测试。

1、发送邮件

[[email protected] ~]# telnet 192.168.1.77 25

2、接收邮件

[[email protected] ~]# telnet mail.bt.com 110

原文地址:http://blog.51cto.com/11905606/2141904

时间: 2024-08-14 03:36:35

详解postfix邮箱服务器安装、配置及其工作原理(内附源码包)的相关文章

详解CentOS7.4搭建Tomcat构建Java Web站点(内附源码包)

Java简介 Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承.指针等概念,因此Java语言具有功能强大和简单易用两个特征.Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论.Java具有简单性.面向对象.分布式.健壮性.安全性.平台独立与可移植性.多线程.动态性等特点.Java可以编写桌面应用程序.Web应用程序.分布式系统和嵌入式系统应用程序等. Tomcat简介 Tomcat是Apache软件基金会的Jakarta项目中的一

ThreadLocal 工作原理、部分源码分析

1.大概去哪里看 ThreadLocal 其根本实现方法,是在Thread里面,有一个ThreadLocal.ThreadLocalMap属性 ThreadLocal.ThreadLocalMap threadLocals = null; ThreadLocalMap 静态内部类维护了一个Entry 数组 private Entry[] table; 查看Entry 源码,它维护了两个属性,ThreadLocal 对象 与一个Object static class Entry extends W

超详解百万PV网站架构案例部署(内附安装包)

网站架构概述 网站架构是根据客户需求分析的结果,准确定位网站目标群体,设定网站的整体架构,规划.设计网站栏目及其内容,制定网站开发流程的顺序,最大限度地进行高效资源分配与管理的设计. 网站架构分很多种,一般我们平常所说的是软件方面的架构,例如: 前端使用了什么代理服务器? web服务器用的是什么? 中间又使用了什么缓存服务器? 数据库服务器用的是什么? 代码又是基于什么框架开发的? 这个网站架构每天访问量有多少(通常所说的PV)?并发数为多少? PV(page view 页面浏览量)即点击量,通

JavaScript中的跨域详解(内附源码)

什么是跨域? 什么是跨域? 所谓跨域,就是如果在不同的域名下面存在数据交互,这个时候就会存在跨域的问题,这里要说明的是在同一个网站不同的文件夹下的数据交互是不存在跨域问题的. 哪些情况下存在跨域问题? 主域和子域之间会存在跨域问题(比如 www.a.com 和 www.a.b.com). 不同的域名存在跨域问题,哪怕这两个域名指向的是同一个ip地址. 为什么 ajax 不可以跨域? 因为 ajax 是通过 XMLHttpRequest 这个对象来进行数据之间的交互的,而 XMLHttpReque

Scala中隐式转换初体验实战详解以及隐式转换在Spark中的应用源码解析之Scala学习笔记-49

package com.leegh.implicits import scala.io.Sourceimport java.io.File /** * @author Guohui Li */ class RichFile(val file: File) { def read = Source.fromFile(file.getPath()).mkString}object Context { implicit def file2RichFile(file: File) = new RichFi

Scala中隐式参数实战详解以及隐式参数在Spark中的应用源码解析之Scala学习笔记-50

package com.leegh.implicits /** * @author Guohui Li */object Context_Implicits { implicit val default: String = "java"} object Param { def print(content: String)(implicit language: String) { println(language + ":" + content) }} object

干货:Java多线程详解(内附源码)

线程是程序执行的最小单元,多线程是指程序同一时间可以有多个执行单元运行(这个与你的CPU核心有关). 在java中开启一个新线程非常简单,创建一个Thread对象,然后调用它的start方法,一个新线程就开启了. 那么执行代码放在那里呢?有两种方式:1. 创建Thread对象时,复写它的run方法,把执行代码放在run方法里.2. 创建Thread对象时,给它传递一个Runnable对象,把执行代码放在Runnable对象的run方法里. 如果多线程操作的是不同资源,线程之间不会相互影响,不会产

转:CentOS系统yum源配置修改、yum安装软件包源码包出错解决办法!

yum安装包时报错: Could not retrieve mirrorlist http://mirrorlist.repoforge.org/el6/mirrors-rpmforge error was 14: PYCURL ERROR 7 - "couldn't connect to host" http://apt.sw.be/redhat/el6/en/x86_64/rpmforge/repodata/repomd.xml: [Errno 14] PYCURL ERROR 7

LNMP+memcached平台源码包的搭建和配置

实验目的: 搭建LNMP平台 L          N          M           PLinux   Nginx   MySQL   PHP(解释PHP语言的程序)实验环境: LNMP平台的搭建IP地址:192.168.1.254 主机名:localhost 安装软件:lnmp+memcached.zip(nginx-1.2.0.tar.gz,cmake-2.8.10.2.tar.gz, mysql-5.5.13.tar.gz) 安装编译工具:gcc gcc-c++ make 开发