Linux 邮件服务器原理介绍,编译安装Postfix实现本地的邮件服务。

一、邮件服务器基本的工作原理

用户(MUA)通过SMTP协议将邮件发送到服务器(MTA),服务器分解发现如果是本地的邮件传输则通过lmtp来传送,如果是远程邮件将调用本地的客户端使用SMTP协议向对方服务器传送。

当对方的服务器接收到邮件之后,发现如果不是本机所负责的域,则将邮件交给本机的邮件客户端,根据邮件目标域请求DNS解析,将邮件发送到目标服务器,或者丢至下一跳此过程称为邮件中继,如果发现是本机负责区域内的用户,则SMTPD将邮件转交给MDA,由MDA把邮件传递到用户的邮筒。

用户通过MUA查看邮件的时候,会将邮件从邮筒拉到用户家目录,保存为mbox的文件。

邮件中继:

SMTPD要支持邮件路由功能,需要打开Open Relay—开放式中继。

SMTPD是根据收件人判断邮件是否需要中继,而且只给指定的客户端中继。

二、邮件服务器与DNS之间的关系

①当发件方需要发送邮件给对方邮件服务器,需要向DNS请求查询对方邮件服务器的MX记录。

②DNS通过查询MX表信息。

③将查询到的MX信息返回给发送方。

④发送方根据优先级,将邮件投递给对方优先级高的邮件服务器(mail1)。

⑤如果主邮件服务器过于繁忙,或者不在线的时候,会将邮件投递给辅的邮件交换器(mail2)上。

⑥待主邮件服交换器空闲下来后,mail2会将代替接收下来的邮件再转给主邮件交换器(mail1)。

注:当DNS上存在多个MX记录的主机这时就是根据DNS的邮件级判断了。DNS上定义的值越小,其优先级越高。 辅助交换器接受到邮件并不能保存邮件。而是这个辅助交换器会等到主邮件交换器空闲的时候把代替它接受下来的邮件在转给主邮件交换器。所以任何邮件处理都是主邮件交换器处理的。所以我们实际情况下,如果有2台服务器做邮件交换器,性能比较高的应该为主的。

三、邮件服务器的各程序组件

MTA(Mail Transfer Agent)接收邮件的服务器端,负责邮件的传输;

sendmail

qmail

postfix

exim

Exchange(windows)

MUA(Mail User Agent) 邮件客户端,提供用户编写查看邮件,向外发送邮件;

Outlook Express , Outlook

Foxmail

Thunderbird

Evolution

mutt

MDA(Mail Delivery Agent) 将收下来的邮件投递到对应用户邮筒中的程序

procmail

maildrop

MRA (Mail Retrieval Agent)通过POP3协议从邮筒中帮用户检索对应邮件

pop3,imap4

cyrus-imap

dovecot

Web Mail  实现网页的形式收发邮件,需要有web服务器的支持;

openwebmail

squirrelmail

Extmail


四、Postfix简介

Postfix 是一种电子邮件服务器,它是由任职于IBM华生研究中心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。

postfix由十几个具有不同功能的半驻留进程组成,并且在这些进程中并无特定的进程间父子关系。某一个特定的进程可以为其他进程提供特定的服务。

大多数的postfix进程由一个进程统一进行管理,该进程负责在需要的时候调用其他进程,这个管理进程就是master进程。该进程也是一个后台程序。

这些postfix进程是可以配置的,我们可以配置每个进程运行的数目,可重用的次数,生存的时间等等。通过灵活的配置特性可以使整个系统的运行成本大大降低。

特点:

1、postfix是免费的;

2、性能好,大约比sendmail快三倍,一台运行postfix的台式pc每天可收发上百万邮件;

3、兼容sendmail

4、健壮稳定,postfix被设计成在重负荷之下仍然可以正常工作。当系统运行超出了可用的内存或磁盘空间时,postfix会自动减少运行进程的数目。当处理的邮件数目增长时,postfix运行的进程不会跟着增加;

5、灵活性好,postfix是由超过一打的小程序组成的,每个程序完成特定的功能。你可以通过配置文件设置每个程序的运行参数。

6、安全性,postfix具有多层防御结构,可以有效地抵御恶意入侵者,可以运行在较低的权限之下;

五、编译安装PostFix

1、关闭服务器已有的邮件服务器,将其卸载。

2、安装MySQL数据库,并给root用户设置好密码。

3、编译安装postfix

安装依赖包

yum install cyrus-sasl-devel -y

yum install cyrus-sasl-plain -y

创建用户和组,postfix用于启动postfix服务器,postdrop(用于邮件投递服务);

groupadd -g 2525 postfix

useradd -g postfix -u 2525 -s /sbin/nologin -M postfix

groupadd -g 2526 postdrop

useradd -g postdrop -u 2526 -s /sbin/nologin -M postdrop

解压源码包

tar xf postfix-2.11.6.tar.gz

cd postfix-2.11.6

编译参数

make makefiles ‘CCARGS=-DHAS_MYSQL -I /alidata/server/mysql/include -DUSE_SASL_AUTH -DUSE_CYRUS_SASL -I /usr/include/sasl -DUSE_TLS‘ ‘AUXLIBS=-L /alidata/server/mysql/lib -lmysqlclient -lz -lm -L/usr/lib64/sasl2 -lsasl2 -lssl -lcrypto‘

make

make install

参数说明:

CCARGS                   指定C编译参数,指定链接的头文件路径。

-DHAS_MYSQL        启用mysql连接功能,指定头文件路径

-DUSE_SASL_AUTH 启用SASL认证

-DUSE_CYRUS_SASL -I  指定SASL头文件路径

-DUSE_TLS                     启用加密协议

AUXLIBS                         辅助的库文件路径

-lz                    表示压缩库文件

-lm                   模块文件

-lsasl2 -lssl -lcrypto 表示使用这些库文件

启动postfix服务器

postfix start

会监听在tcp的25号端口,进程名为master。

postfix配置文件:

master:/etc/postfix/master.cf

mail:/etc/postfix/main.cf

参数必须写在行的行首,以空白开头的行被认为是上一行的延续。

postconf 配置工具:

-d:显示默认配置

-n:显示修改过的配置

-m:显示支持的查找表类型

-A:显示支持的SASL客户端插件类型

-e:Parameter=Value 更改参数配置信息,并保存至main.cf文件中;

smtp状态码:

1xx:纯信息

2xx:正确

3xx:上一步操作尚未完成,需要继续补充。

4xx:暂时性错误

5xx:永久性错误

当出现postfix无法读取邮件别名的时候使用命令/usr/bin/newaliases,将别名文件aliases进行hash散列;

可生成aliases.db文件;

演示telnet连接postfix  smtp指令发邮件:

查看日志 /var/log/maillog

切换到本机tuchao用户查看邮件

时间: 2024-12-13 16:23:10

Linux 邮件服务器原理介绍,编译安装Postfix实现本地的邮件服务。的相关文章

编译安装postfix及使用sasl对客户端认证

编译安装postfix 在之前的文章我增提到过,目前linux常用的MTA软件有sendmail,qmail,exim,postfix.虽然目前使用最多的MTA是sendmail,但是sendmail实现的功能远没有postfix功能强大,而且postfix兼容sendmail,执行效率比sendmail更高,也更安全,postfix采用模块化设计.因此,由于具有众多的优点,postfix越来越流行.因此,此章主要是介绍如何使用postfix来搭建一台服务器,并使用sasl来为客户端提供认证功能

源码编译安装postfix

一.安装前的准备工作 邮件依赖于DNS系统,所以安装postfix之前,要把DNS给弄好.如果系统有sendmail,需要把sendmail关掉 # service sendmail stop # chkconfig sendmail off 由于是编译安装postfix,所以如果有rpm的postfix,要删除掉,并且把postfix用户等信息也删除掉.因为我后面要配合做mysql认证,好像rpm的postfix不支持mysql认证,我也没有验证过,为了保险起见,直接源码来安装了! # yum

linux下服务器守护进程的安装

一.在服务器上安装rstatd守护进程安装步骤:1. 从网上下载rstatd2. 将该文件放到/home/user目录下3. chmod 777 rpc.rstatd----改变该文件读写的权限,拥有所有权限.4. chmod 777 configure ---同上5. ./configure ---配置6. make ---编译7. make install ---安装8. rpc.rstatd ---启动rstatd进程二.在lr中配置从LR里面add measurement, 填写linu

linux Mysql 主从复制 原理介绍和步骤详解

大家好,我是霸王卸甲,今天我给大家带来的是linux数据库中的主从复制的简单介绍和步骤详解. 主从复制 mysql主从复制 灵活 一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的: 多主一从---5.7开始支持 联级复制--- 用途及条件 mysql主从复制用途 实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务 主从部署必要条件: 主库开启binlog日志(设置log-bin参数) 主从server-id不同 从库服务器能连通主库 主从原理mysql主

Linux下通过源码编译安装程序

ASK: Linux下通过源码编译安装程序(configure/make/make install的作用) configure Linux 平台有各种不同的配置,安装时需要通过 configure 来确定,如:编译器用的是 cc 还是 gcc.不同库文件所在目录等.执行 configure 后会生成 Makefile,Makefile 规定了用什么编译器.编译参数等信息. make 根据 Makefile 中规定的内容进行编译,生成的可执行文件放在当前目录或某个子目录. make install

Linux下用Intel编译器编译安装NetCDF-Fortan库(4.2版本后)

本来这个问题真的没必要写的,可是真的困扰我太久%>_<%,决定还是记录一下. 首先,最权威清晰的安装文档还是官方的: Building the NetCDF-4.2 and later Fortran libraries (写此文时,最近版为4.2) 那这个文档最开始就告诉我们,自NetCDF库4.2版本以后,Fortran的库和C的库就要分开build啦!而且要装Fortran的库必须先装好C的库. 所以先装C的库咯:仍然官方文档: Getting and Building NetCDF-C

如何开发应用程序将客户服务器数据库的备份,下载到本地的云服务上?

---恢复内容开始--- 如何做到将客户服务器数据库的备份,下载到本地的云服务上? 在开发这个程序中中途也遇到了一下问题,下面我将自己如何进解决的办法写出来供大家参考. 一.首先我需要进行描述一下问题: 1.比如有两台服务器A,B(云服务器) 将A中的服务器中的数据库的备份进行下载到B的云服务中并保存. 2.当然这台A服务器的外网是可以进行访问,如果外网访问不了的话,那也是没有办法的. 3.然后在B服务器中定期的进行删除数据库备份,定时的下载.并进行保存最新一个星期的数据库备份. 4.在云服务需

烂泥:Postfix邮件服务器搭建之软件安装与配置

本文由ilanniweb提供友情赞助,首发于烂泥行天下 想要获得更多的文章,可以关注我的微信ilanniweb Postfix邮件服务器的搭建需要使用到几个软件,分别是cyrus-sasl.postfix.dovecot.postfixadmin.roundcubemail,只有这几个软件相互配合才能搭建一套完整的邮件服务器. PS:本次实验在centos6.5 64bit上进行. 一.软件功能介绍 cyrus-sasl.postfix.dovecot.postfixadmin.roundcub

编译安装postfix邮件服务

一.安装前的准备 1.邮件服务基本知识: wget http://sourceforge.net/p SMTP:(Simple Mail Transfer Protocol)即简单邮件传输协议 POP3:邮局协议     IMAP4:internet mail access protocol 互联网邮件访问协议 SASL:simple Authentication Secure layer  简单安全认证层 (版本v1,v2目前主流v2版本) MDA:邮件投递代理(procmail,maildr