Postfix 是一种电子邮件服务器,它是由任职于IBM华生研究中心(T.J. Watson Research Center)的荷兰籍研究员Wietse Venema为了改良sendmail邮件服务器而产生的。最早在1990年代晚期出现,是一个开放源代码的软件。

sendmail由于出现的比较早,但是各方面的问题也比较突出,postfix就是为了替代sendmail的缺点而出现的,postfix 邮件服务器的优点很明显:

  1. 开源的,要知道开源的即是免费的

  2. 速度更快,比sendmail×××倍

  3. 兼容性好,与sendmail兼容,两者互相迁移很方便。

  4. 更能干,在重负荷之下仍然能正常工作,当超负荷之后,他会自动调整

  5. 更灵活,不同于sendmail一体化的设计,postfix使用模块化的设计,各个模块专注于自己的工作。

  6. 安全性,具有多层的防御结构。

postfix的模块有哪些呢?

  1. smtpd 用于响应用户的请求

  2. cleanup 用于检测语法

  3. pickup 用于分检邮件

  4. smtp 类似于客户端,传输邮件

  5. qmgr 队列管理器 用于不同邮件状态的管理。

postfix由这些还有其他的一些模块来进行服务,各个模块自己完成自己的任务,他们由一个master进程统一调度

postfix的四种邮件队列?

  1. maildrop 本地邮件存放处

  2. incoming 放置正在到达或者队列管理进程尚未发现的邮件

  3. active 放置已经打开了正准备投递的邮件,当然它是由长度限制的。

  4. deferred 放置不能被投递的邮件

队列管理进程仅仅在内存中保留active队列,并且限制其长度。

postfix 对邮件风暴的处理

当有新的邮件到达的时候,postfix进行初始化,此时postfix同时只接受两个并发连接请求,当邮件投递成功后,可以同时接收的并发连接就会缓慢地增长,一直到可配置的值

当系统资源消耗已经达到不能承受的负载,就会停止并发连接数量的增长,或者postfix在处理邮件过程中遇到问题,数量也会减少。

当接收到的新邮件的数量,超过它的投递能力时,postfix会停止投递deferred队列中的邮件,去处理新接收到的邮件,因为处理新邮件的延迟小于处理defferred队列中的邮件。

postfix 对无法投递的邮件的处理

当第一次发送失败,postfix会给该邮件,贴上一个将来的时间有票,在达到这个时间之前,不会再处理该类邮件,到到达这个时间时,进行投递,再次失败,将再次贴上一个双倍与第一次的邮件将来时间的邮票,以此类推,进行多次尝试之后,放弃该邮件,回复用户错误信息

postfix对于目标不可达的目的邮件的处理

postfix内存之中保存了一个有长度限制的不可达的地址列表,避免想这些地方进行邮件投递

postfix的安全性

  1. 动态分配内存,放置系统缓冲区溢出

  2. 把大邮件分割成几块处理,投递时在进行重组

  3. postfix的各个进程互相不进行控制,只接受master主进程的控制

  4. postfix 的队列文件有其特殊格式,只能被postfix本身识别

postfix邮件服务对于邮件的处理过程:

接收的过程: 当接受新邮件时,新的邮件首选在incoming队列停留,并进行处理

  1. 对于来自与本地的邮件:local进程负责接收,并放置邮件于maildrop队列中,然后pickup进程对其进行完整性检测,maildrop目录的权限必须进行设置 避免用户删除其他用户的邮件

  2. 对于网络的邮件:smtpd 进程负责接收邮件,并且进行安全性检测

  3. postfix进程会自己产生邮件,用于将邮件的不可投递信息返回给发件人,这些工作由bounce后台程序产生

  4. postfix 产生邮件,提示postfix管理员 postfix运行过程中出现问题

  5. cleanup进程,对邮件进行处理,添加信头中丢失的Form信息。也就是将地址重写为标准的user@’域名‘ 的格式,从信头中抽取收件人的地址,投入到incoming队列中,请求处理该信件,请求地址重写进程将收件人地址转换为标准的user@‘域名’的格式

邮件的投递过程

上面的部分结束之后,邮件已经到达incoming的队列了,接下来进行邮件的投递。

  1. 邮件到达邮件队列管理进程,他将办含有队列文件路径信息,发件人地址,收件人地址的投递请求发送给投递代理。

  2. 与此同时,邮件队列管理进程维护者deferred,active队列,不同状态的邮件放置于的队列

  3. 针对于发送成功与失败,队列管理进程与rewrite,与bounce后台程序练习,成功的给rewrite进行地址解析,失败的给bounce返回信息给用户

  4. 检查成功的邮件送给投递代理进程,local和smtpd

实验:linux中实现postfix邮件服务器

实验环境:linux 虚拟机5.4

1.安装postfix。

[root@mailServer]# rpm -ivh postfix-2.3.3-2.1.el5_2.i386.rpm

[root@mailServer]# rpm -ivh system-switch-mail-0.5.25-12.noarch.rpm

//用于转换邮件服务器的工具,系统默认sendmail作为邮件服务器,转换为postfix

2.选择postfixmail

  1. 配置文件

模块管理文件 /etc/postfix/master.cf

主配置文档 /etc/postfix/main.cf

Postconf -d 查看默认的参数值

Postconf -n 查看新的参数值

Postconf -e 编辑

编辑main.cf文件

69myhostname = mail.163.com //本地域名

77mydomain = 163.com //自己的域名

93myorigin = $mydomain

//实现地址伪装,将邮件的真实来源改正为myorigin所指的域名中。

110inet_interfaces = localhost //只接受自己的用户

107inet_interfaces = all //监听所有

156mydestination = myhostname,localhost.myhostname, localhost.myhostname,localhost.mydomain, localhost, $mydomain

//哪些是本地信件,允许本地作用域发送邮件。

观察日志信息,如果咩有打开main.cf 156行的注释

邮件状态进入到了 deferred,发送失败

配置本地用户可以发送邮件。则发送成功!

Postfix mail的中继!!

255mynetworks = 168.100.189.0/28, 127.0.0.0/8

在所标记网段中 的 计算机发来的邮件允许中继。

Postfix mail的中安全认证!

broken_sasl_auth_clients= yes

smtpd_sasl_auth_enable= yes

smtpd_sasl_security_options= noanonymous //不允许匿名账号发送

#smtpd_sasl_application_name= smtpd //smtpd

#smtpd_client_restrictions= permit_sasl_authenticated,reject//经过验证可以连接,没经过

验证拒绝

#smtpd_client_restrictions= permit_sasl_authenticated //限制用户连接验证不验证都连

smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

将他们写入postfix的主配置文件中

[root@mail~]# service saslauthd restart

[root@mail~]# vim /usr/lib/sasl2/smtpd.conf

当然此时如果使用不存在的账号,来测试是否能通讯的话,还是能够发送邮件,那是因为身份验证不是强制性的。

673smtpd_client_restrictions = permit_sasl_authenticated,reject //更改配置文件

还是需要 auth login 进行验证账号密码 均为base64 编码

拓展:

SquirrelMail是一套基于标准的,采用PHP4开发Webmail 邮件系统。它内置纯PHP支持的IMAP和SMTP协议,所有页面都遵循HTML4.0标准(没有使用JavaScript支持),以便最大限度兼容更多浏览器上。它对系统要求非常低,并且安装和配置非常容易。SquirrelMail具备一个客户端邮件程序所应拥有的一切功能,包括支持增强型的MIME、地址薄、文件夹操作等等功能。Outlook皮肤主题。

[root@mail~]# yum install squirrelmail

[root@mail~]# cd /var/www/html/

[root@mailhtml]# ln -s /usr/share/squirrelmail mail

[root@mailsqurrmail]# cd /var/www/html/squrrmail

[root@mailsqurrmail]# ./conf.pl

与性能有关的配置

服务器设置

全局配置

语言选项

登陆测试

当登陆之后,提示错误,错误信息是没有imap服务器,也就是没有邮件接收服务器,而linux中的邮件接收服务器是dovecot,所以安装dovecot,并启动dovecot 服务之后


673#smtpd_client_restrictions = permit_sasl_authenticated,reject

编辑配置文件,注释行

邮件可以发送出去了

邮件服务器-postfix服务器相关推荐

  1. 虚拟机安装postfix服务器,CentOS 7 下搭建邮件服务器(bind+postfix+dovecot)

    CentOS 7下搭建邮件服务器 前提环境:CentOS 7虚拟机IP为192.168.43.124 主机名为mail.zxp.com 修改主机名:hostnamectl set-hostname m ...

  2. postfix 服务器邮件操作命令

    使用邮件服务首先保证服务器能ping通公网 *查看队列 postqueue -p *删除队列邮件根据ID postsuper -d MessageID *根据发送者来删除队列邮件,替换 "i ...

  3. 邮箱邮件服务器迁移服务器要多久生效,邮件服务器迁移方案让企业邮箱安心“搬家”...

    邮件服务器的各种功能优势已经得到广大企业用户的肯定,是实现企业协同办公.最佳效率以及提高竞争反应机制的最重要一环.但随着邮件服务器应用的不断深入,有些企业对正在使用的邮箱也颇具微词,像服务器不稳定.垃 ...

  4. 服务器项目有哪些,怎么部署项目到服务器?服务器的特性有哪些?

    怎么部署项目到服务器?服务器的特性有哪些? 分类:云服务资讯 编辑: 浏览量:100 2021-06-21 17:29:50 相信很多人都觉得建站容易部署难,部署项目到服务器不仅需要耗费大量的时间,还 ...

  5. 服务器用户配置文件在哪里找,SharePoint Server 中的服务器到服务器身份验证和用户配置文件...

    SharePoint Server 中的服务器到服务器身份验证和用户配置文件 8/24/2017 本文内容 适用于: 2013 2016 2019 Microsoft 365 使用服务器间身份验证,支 ...

  6. 群集系统服务器,多服务器群集 2008

    搭建Windows故障转移群集 在配置群集的过程中可能会出现很多问题,这时候需要冷静思考:还是前面说的那样,对需要加入群集的服务器配置必须一致,这样出现不通过的概率就会很低不然会出现各类问题.本文转自 ...

  7. Nginx服务器--Nginx服务器的使用笔记

    1.Nginx简介 Nginx("engine x") 一个具有高性能的[HTTP]和[反向代理]的[WEB服务器],同时它也是一个[POP3/SMTP/IMAP代理服务器],由伊 ...

  8. 什么是服务器和服务器的作用

    服务器的是什么? 什么是服务器: 服务器作为网络的节点,存储.处理网络上80%的数据.信息,因此也被称为网络的灵魂. 从广义上讲,服务器是指网络中能对其它机器提供某些服务的计算机系统(如果一个PC对外 ...

  9. 服务器文件怎么备份,何为文件备份服务器,文件备份服务器的使用方法及注意事项?...

    文件备份服务器是备份文件用的服务器 文件备份服务器方法 方法一: 1.停止sql server(右键点击任务栏中的sql server服务器,选择"MSSQLServer-停止") ...

最新文章

  1. Unable to complete the scan for annotations for web application
  2. PPLcnet和YOLO的碰撞,真的能在cpu上快到起飞?
  3. java resultset wasnull_Java Spring – RowMapper ResultSet – 整数/空值
  4. nginx的upstream问题记录
  5. React是什么及特点
  6. MySQL用户与权限管理
  7. Android Activity无法启动。
  8. vue input 赋值无效
  9. 修复SVCHOST.EXE出现0x745f2780错误
  10. [从零开始]HelloWorld——第一个应用程序
  11. 培养用户习惯才是软件的唯一出路!
  12. VTD信号灯TrafficLight数据解析提取
  13. SMSSDK接入(Mob短信SDK接入)
  14. 神经网络——激活函数的作用
  15. 【毕设】基于CycleGAN的风格迁移【二】CycleGAN源码解读
  16. 1078: 字符串加密
  17. Shallow Heap 和 Retained Heap的区别
  18. 随机函数(随机取数)
  19. 流程图的制作技巧分享,手把手教你如何绘制流程图
  20. everything搜索指定路径下的多个文件

热门文章

  1. 使用SSH连接本机WSL系统
  2. java 屏蔽广告js_js屏蔽广告
  3. Java实现freemarker生成word模板
  4. 中小学教学与管理的44个小创意(转)
  5. 基本布局之相对布局(RelativeLayout)
  6. ntp服务器udp协议,windows2003 2008 2012 2016 2019封UDP协议服务器自动同步时间
  7. LintCode 1347. 尾随零 JavaScript算法
  8. 1.基于S5PV210的图片解码播放器(详解)
  9. 关于向日葵远程软件使用问题解决
  10. 信奥中的数学:概率论、线性规划之单纯形法