postfix(邮件服务器)

postfix(邮件服务器)

邮件的整个收发流程

邮件相关协议

SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议, 工作在TCP的25端口。它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。跟名字一样smtp非常简单,无法做到认证,邮件存放等功能。
POP3(Post Office Protocol)邮局协议第3版,工作在TCP的110端口。本协议主要用于支持使用客户端远程管理在服务器上的电子邮件。POP 协议支持“离线”邮件处理。其具体过程是:邮件发送到服务器上,电子邮件客户端调用邮件客户机程序以连接服务器,并下载所有未阅读的电子邮件。这种离线访问模式是一种存储转发服务,将邮件从邮件服务器端送到个人终端机器上,一般是PC机或 MAC。一旦邮件发送到 PC 机或MAC上,邮件服务器上的邮件将会被删除。但目前的POP3邮件服务器大都可以“只下载邮件,服务器端并不删除”,也就是改进的POP3协议。
IMAP4(Internet Mail Access Protocol)因特网邮件访问协议第4版,工作在TCP的143端口。IMAP4协议与POP3协议一样也是规定个人计算机如何访问网上的邮件的服务器进行收发邮件的协议,但是IMAP4协议同POP3协议相比更高级。IMAP4支持协议客户机在线或者离开访问并阅读服务器上的邮件,还能交互式的操作服务器上的邮件。IMAP4协议更人性化的地方是不需要像POP3协议那样把邮件下载到本地,用户可以通过客户端直接对服务器上的邮件进行操作(这里的操作是指:在线阅读邮件 在线查看邮件主题 大小 发件地址等信息)。用户还可以在服务器上维护自己邮件目录(维护是指移动)新建 删除重命名共享 抓取文本 等操作)。IMAP4协议弥补了POP3协议的很多缺陷。
在这里插入图片描述

邮件相关名词

一般情况下,我们把电子邮件程序分解成传输代理,投递代理和用户代理。用户代理用来接受用户的指令,将用户的信件传送至信件传输代理.而投递代理则从信件传输代理取得信件传送至最终用户的邮箱.当用户试图发送一封电子邮件的时候,他并不能直接将信件发送到对方的机器上,用户代理必须试图去寻找一个信件传输代理,把邮件提交给它。信件传输代理得到了邮件后,首先将它保存在自身的缓冲队列中,然后,根据邮件的目标地址,信件传输代理程序将找到应该对这个目标地址负责的邮件传输代理服务器, 并且通过网络将邮件传送给它。对方的服务器接收到邮件之后,将其缓冲存储在本地,直到电子邮件的接收者查看自己的电子信箱。
1)MTA(Mail Transfer Agent)
邮件传输代理工具,通过SMTP协议所指定的服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。常用的MTA有:
SendMail:邮件的鼻祖。
Qmail:一个数学家开发,作为Linux下面主流的邮件系统内核,大量著名的商业邮件系统都是在Qmail内核下开发,比如Hotmail。
Postfix:IBM安全专家开发,模块化设计,并且比sendmail兼容效率更高。
Exim:是基于GPL协议的开放源代码软件,由英国剑桥大学的Philip Hazel开发。
Exchange:微软公司的一套电子邮件服务组件,是个消息与协作系统。
2)MDA(Mail Delivery Agent)
邮件投递代理,投递代理则从信件传输代理取得信件传送至最终用户的邮箱。常用的MDA有:
ProcMail:Postfix默认的邮件投递工具。
MailDrop:相对比较专业的投递代理工具。
3)MRA(Mail Retrieval Agent)
邮件取回代理,使用POP3或IMAP4协议工作。一般用于从用户信箱取回邮件到邮件用户代理客户端。常用的MRA有:
Dovecot:是一个开源的支持IMAP和POP3协议的收邮件服务器(自带SASL功能)。
4)MUA(Mail User Agent)
邮件用户代理工具。常用的MUA有:
OE:Windows旧版本自带的工具。
Outlook:Office套件带的工具。
FoxMail:腾讯公司的邮件客户端工具。
Thunderbird:雷鸟是Linux下的客户端工具。
Mutt:Linux下的字符界面客户端工具。
5)WebMail
基于Web的电子邮件收发系统,扮演邮件用户代理角色,一般而言,WebMail系统提供邮件收发、用户在线服务和系统服务管理等功能。WebMail的界面直观、友好,不需要借助客户端,免除了用户对E-mail客户软件(如:Foxmail、Outlook等)进行配置时的麻烦,只要能上网就能使用WebMail,方便用户对邮件进行接收和发送。WebMail使得E-mail在Internet上的应用广泛。常用的Webmail有:
Openwebmail:台湾开发的。
Squirrelmail:Centos系统自带。
Extmail,Extman:国内开发的也被称为EMOS系统。
6)Mail Relay
邮件中继,先要明白一个概念,一封邮件只要不是发送给本域内用户的,比如从当前域发送到另一个域,或从当前域发送到另一个域然后转到另外一个域的,这就属于中继。但是一般邮件服务器都会允许本地或本域内的用户进行中继。不然就只能在本域内发送邮件而不能给外部邮箱发送邮件。Postfix默认只能基于IP地址做中继认证。
7)SASL(simple authentication secure layer)
简单认证安全层,是一种用来扩充C/S模式验证能力的机制。在Postfix可以利用SASL来判断用户是否有权使用转发服务,或是辨认谁在使用你的服务器。
常用的Sasl有:
cyrus-sasl:Redhat系列自带的SASL认证框架。
dovecot-sasl:dovecot组件带的SASL认证框架。
courier-authlib:这是一个带有MTA,MDA以及SASL认证的软件,但是一般只是用它的SASL功能。

Postfix介绍

Postfix是Wietse Venema在IBM的GPL协议之下开发的MTA(邮件传输代理)软件。是为了改良sendmail邮件服务器而产生的。其特点:

  1. postfix是免费的:postfix想要作用的范围是广大的Internet用户,试图影响大多数的Internet上的电子邮件系统,因此它是免费的。
  2. 更快:postfix在性能上大约比sendmail快三倍。一部运行postfix的台式PC每天可以收发上百万封邮件。
  3. 兼容性好:postfix是sendmail兼容的,从而使sendmail用户可以很方便地迁移到postfix。Postfix支持/var[/spool]/mail、/etc/aliases、 NIS、和 ~/.forward 文件。
  4. 更健壮:postfix被设计成在重负荷之下仍然可以正常工作。当系统运行超出了可用的内存或磁盘空间时,postfix会自动减少运行进程的数目。当处理的邮件数目增长时,postfix运行的进程不会跟着增加。
  5. 更灵活:postfix是由超过一打的小程序组成的,每个程序完成特定的功能。你可以通过配置文件设置每个程序的运行参数。
    6.安全性:postfix具有多层防御结构,可以有效地抵御恶意入侵者。如大多数的postfix程序可以运行在较低的权限之下,不可以通过网络访问安全性相关的本地投递程序等等。
    Postfix服务器工作原理
    在这里插入图片描述
    邮件服务器工作在两种情况下:一种是相同域内转发;二是不同域内转发。所以MTA(postfix)内部一般都会有服务端(smtpd)、客户端(smtp)和MDA。smtpd邮件服务器非常简单,只负责转发邮件别的什么功能也没有并且发送方不管是什么地址都可以从smtpd服务器转发到目标地址。
    根据上图分别阐述一下邮件服务器两种工作机制:
    相同域内转发:用户A通过工具连接到SMTPD服务端,然后发送一份邮件,而目标收件人是B用户。当SMPTD收到邮件后判断发现是同域内的用户,就会直接启动MDA进程把邮件投进用户邮箱中,当用户通过MUA工具(如mail命令)就可以直接收到邮件。
    不同域内转发:用户A通过工具连接到SMTPD服务端,然后发送一份邮件,而目标收件人是C用户。当SMPTD收到邮件后判断发现是不同域内用户,就会启动SMTP客户端来转发此邮件。SMTP收到请求后就会解析对方MX记录,然后连接对方SMTPD服务器并把邮件发送过去。当对方SMTPD发现此邮件就是本域内的邮件后也会调用MDA进程把邮件投递进用户邮箱中,当用户通过MUA工具(如mail命令)就可以直接收到邮件。

配置postfix

配置过程中,建议开启smtp的认证功能(必须输入用户名和密码),否则任意一封邮件都会转发到你的邮箱,容易被人写一个脚本一直往你邮箱发送垃圾内容,导致你邮箱无法正常使用。

postfix一般都是已经装好并启动起来的,所以只需要修改main.cf即可,查看是否启动:systemctl is-active postfix 为active即是启动的:
在这里插入图片描述
postfix可以查看所有的选项有800多个,但是main.cf里只有很少的几个条目,格式为:
key1=value1,value11(多个参数用,隔开)
key2=value2
key3=key1,value3(也可以调用参数key*)
注:每行的内容都要顶头写,不能有空格,负责会认为是上一行的延续。

postfix的配置文件结构

postfix的配置文件位于/etc/postfix下,安装完postfix以后,我们可以通过ls命令查看postfix的配置文件:
[root@mail postfix]# ls
install.cf main.cf master.cf postfix-script
  这四个文件就是postfix最基本的配置文件,它们的区别在于:
mail.cf:是postfix主要的配置文件。
Install.cf:包含安装过程中安装程序产生的postfix初始化设置。
master.cf:是postfix的master进程的配置文件,该文件中的每一行都是用来配置postfix的组件进程的运行方式。
postfix-script:包装了一些postfix命令,以便我们在linux环境中安全地执行这些postfix命令。

postfix的基本配置

postfix大约有100个配置参数,这些参数都可以通过main.cf 指定。配置的格式是这样的,用等号连接参数和参数的值。如:
myhostname = mail.mydomain.com
  等号的左边是参数的名称,等号的右边是参数的值; 当然,我们也可以在参数的前面加上$来引用该参数,如:
myorigin = $myhostname
  虽然postfix有100个左右的参数,但是postfix为大多数的参数都设置了缺省值,所以在让postfix正常为你服务之前,你
只需要配置为数不多的几个参数。下面我们一起来看一看这些基本的postfix参数。需要注意的是,一旦你更改了main.cf文件的内容,则必须运行
postfix reload命令使其生效。
1. myorigin
  myorigin参数指明发件人所在的域名。如果你的用户的邮件地址为
[email protected]
,则该参数指定@后面的域名。缺省地, postfix使用本地主机名作为myorigin,但是建议你最好使用你的域名,因为这样更具有可读性。比如:安装postfix的主机为 mail.domain.com则我们可以这样指定myorigin:
myorigin = domain.com
  当然我们也可以引用其他参数,如:
myorigin = $mydomain
2. mydestination
  mydestination参数指定postfix接收邮件时收件人的域名,换句话说,也就是你的postfix系统要接收什么样的邮件。比如:你的用户的邮件地址为
[email protected]
, 也就是你的域为domain.com, 则你就需要接收所有收件人为
[email protected]
的邮件。与myorigin一样,缺省地,postfix使用本地主机名作为 mydestination。如:
mydestination = m y d o m a i n m y d e s t i n a t i o n = d o m a i n . c o m 3 n o t i f y c l a s s e s     p o s t f i x p o s t f i x p o s t f i x n o t i f y c l a s s e s p o s t f i x b o u n c e p o s t f i x 2 b o u n c e p o s t f i x d e l a y p o l i c y U C E p o s t f i x S M T P p r o t o c o l p o s t f i x S M T P r e s o u r c e p o s t f i x s o f t w a r e p o s t f i x n o t i f y c l a s s e s = r e s o u r c e , s o f t w a r e 4 m y h o s t n a m e     m y h o s t n a m e p o s t f i x m y h o s t n a m e = m a i l . d o m a i n . c o m 5 m y d o m a i n     m y d o m a i n p o s t f i x m y h o s t n a m e m y d o m a i n m y d o m a i n = d o m a i n . c o m 6 m y n e t w o r k s     m y n e t w o r k s p o s t f i x 访 A B C C I D R , 192.168.1.0 / 24192.168.1.0 / 267 i n e t i n t e r f a c e s     i n e t i n t e r f a c e s p o s t f i x p o s t f i x p o s t f i x i p i n e t i n t e r f a c e s = a l l i n e t i n t e r f a c e = 192.168.1.1 p o s t f i x U C E u n s o l i c i t e d c o m m e r c i a l e m a i l     U C E p o s t f i x     p o s t f i x i p mydomain mydestination = domain.com 3. notify_classes   在postfix系统中,必须指定一个postfix系统管理员的别名指向一个用户, 只有这样,在用户遇到问题时才有报告的对象,postfix也才能将系统的问题报告给管理员。notify_classes参数就是用来指定向postfix管理员报告错误时的信息级别。共有以下几种级别: bounce:将不可以投递的邮件的拷贝发送给postfix管理员。出于个人隐私的缘故,该邮件的拷贝不包含信头。 2bounce:将两次不可投递的邮件拷贝发送给postfix管理员。 delay:将邮件的投递延迟信息发送给管理员,仅仅包含信头。 policy:将由于UCE规则限制而被拒绝的用户请求发送给postfix管理员,包含整个SMTP会话的内容。 protocol:将协议的错误信息或用户企图执行不支持的命令的记录发送给postfix管理员。同样包含整个SMTP会话的内容。 resource:将由于资源错误而不可投递的错误信息发送给postfix管理员,比如:队列文件写错误等等。 software:将由于软件错误而导致不可投递的错误信息发送给postfix管理员。 缺省值为: notify_classes = resource, software 4.myhostname   myhostname 参数指定运行postfix邮件系统的主机的主机名。缺省地,该值被设定为本地机器名。你也可以指定该值,需要注意的是,要指定完整的主机名。如: myhostname = mail.domain.com 5.mydomain   mydomain参数指定你的域名,缺省地,postfix将myhostname的第一部分删除而作为mydomain的值。你也可以自己指定该值,如: mydomain = domain.com 6.mynetworks   mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问。你可以用标准的A、B、C类网络地址,也可以用CIDR(无类域间路由)地址来表示,如: 192.168.1.0/24 192.168.1.0/26 7.inet_interfaces   inet_interfaces 参数指定postfix系统监听的网络接口。缺省地,postfix监听所有的网络接口。如果你的postfix运行在一个虚拟的ip地址上,则必须指定其监听的地址。如: inet_interfaces = all inet_interface = 192.168.1.1 postfix的UCE(unsolicited commercial email)控制   所谓UCE控制就是指控制postfix接收或转发来自于什么地方的邮件。   缺省地,postfix转发符合以下条件的邮件: 来自客户端ip地址符合 mynetworks的邮件。
来自客户端主机名符合 r e l a y d o m a i n s relay_domains及其子域的邮件。 目的地为 relay_domains及其子域的邮件。
  缺省地,postfix接受符合以下条件的邮件:
目的地为 i n e t i n t e r f a c e s inet_interfaces的邮件。 目的地为 mydestination的邮件。
目的地为 v i r t u a l m a p s     1     h e a d e r c h e c k s h e a d e r c h e c k s = r e g e x p : / e t c / p o s t f i x / h e a d e r c h e c k s h e a d e r c h e c k s = p c r e : / e t c / p o s t f i x / h e a d e r c h e c k s     p o s t f i x 2 /     s m t p d c l i e n t r e s t r i c t i o n s p o s t f i x S M T P i p r e j e c t u n k n o w n c l i e n t i p D N S P T R u n k n o w n c l i e n t r e j e c t c o d e 450 D N S p e r m i t m y n e t w o r k s i p virtual_maps的邮件。   但是我们也可以通过下面的规则来实现更强大的控制功能。 1. 信头过滤   通过header_checks参数限制接收邮件的信头的格式,如果符合指定的格式,则拒绝接收该邮件。可以指定一个或多个查询列表,如果新邮件的信头符合列表中的某一项则拒绝该接收邮件。如: header_checks = regexp:/etc/postfix/header_checks header_checks = pcre:/etc/postfix/header_checks   缺省地,postfix不进行信头过滤。 2.客户端主机名/地址限制   通过smtpd_client_restrictions参数限制可以向postfix发起SMTP 连接的客户端的主机名或ip地址。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有: reject_unknown_client:如果客户端的ip地址在DNS中没有PTR记录则拒绝转发该客户端的连接请求。可以用 unknown_client_reject_code参数指定返回给客户机的错误代码(缺省为450)。如果你有用户没有作DNS记录则不要启用该选 项。 permit_mynetworks:如果客户端的ip地址符合 mynetworks参数定义的范围则接受该客户端的连接请求,并转发该邮件。

check_client_access
maptype:mapname:根据客户端的主机名、父域名、ip地址或属于的网络搜索access数据库。如果搜索的结果为REJECT 或者
‘[45]XX text’ 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY
或数字则接受该客户端的连接请求,并转发该邮件。。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为
554)。
reject_maps_rbl:如果客户端的网络地址符合$maps_rbl_domains参数的值则拒绝该客户端的连接请求。可以用maps_rbl_reject_code参数指定返回给客户机的错误代码(缺省为554)。
  示例:
smtpd_client_restrictions = hash:/etc/postfix/access, reject_maps_rbl
smtpd_client_restrictions = permit_mynetworks, reject_unknown_client
  该参数的缺省值为:
smtpd_client_restrictions =

也即接收来自任何客户端的SMTP连接。

是否请求HELO命令

可以通过smtpd_helo_required参数指定客户端在SMTP会话的开始是否发送一个HELO命令。你可以指定该参数的值为yes或no。缺省值为:

smtpd_helo_required = no

HELO主机名限制

可以通过smtpd_helo_restrictions参数指定客户端在执行HELO命令时发送给postfix的主机名。缺省地,
postfix
接收客户端发送的任意形式的主机名。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规
则有:

reject_invalid_hostname:如果HELO命令所带的主机名参数不符合语法规范则拒绝客户机的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为501)。

permit_naked_ip_address:RFC要求客户端的HELO命令包含的ip地址放在方括号内,你可以用permit_naked_ip_address参数取消该限制。因为有的mail客户端不遵守该RFC的规定。

reject_unknown_hostname:如果客户端执行HELO命令时的主机名在DNS中没有相应的A 或 MX
记录则拒绝该客户端的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为450)。

reject_non_fqdn_hostname:如果客户端执行HELO命令时的主机名不是RFC规定的完整的域名则拒绝客户端的连接请求。可以用invalid_hostname_reject_code参数指定返回给客户机的错误代码(缺省为504)。

check_helo_access
maptype:mapname:根据客户端HELO的主机名、父域名搜索access数据库。如果搜索的结果为REJECT 或者 ‘[45]XX
text’ 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY
或数字则接受该客户端的连接请求。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。

示例:

smtpd_helo_restrictions = permit_mynetworks, reject_invalid_hostname

RFC 821信头限制

RFC 821对邮件的信头做了严格的规定,但是广泛使用的sendmail并不支
持该规定,所以对于该参数我们只能说不,即:

strict_rfc821_envelopes = no

通过发件人地址进行限制

可以用smtpd_sender_restrictions参数通过发件人在执行MAIL FROM命令时提供的地址进行限制。可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:

reject_unknown_sender_domain:如果MAIL FROM命令提供的主机名在DNS中没有相应的A 或 MX
记录则拒绝该客户端的连接请求。可以用unknown_address_reject_code参数指定返回给客户机的错误代码(缺省为450)。

check_sender_access maptype:mapname:根据MAIL
FROM命令提供的主机名、父域搜索access数据库。如果搜索的结果为REJECT 或者 ‘[45]XX text’
则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY
或数字则接受该客户端的连接请求。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。可以通过该参数
过滤来自某些不受欢迎的发件人的邮件。

reject_non_fqdn_sender:如果MAIL FROM命令提供的主机名不是RFC规定的完整的域名则拒绝客户端的连接请求。可以用non_fqdn_reject_code 参数指定返回给客户机的错误代码(缺省为504)。
缺省地,postfix接受来自任何发件人的邮件。

示例:

smtpd_sender_restrictions = hash:/etc/postfix/access, reject_unknown_sender_domain

通过收件人地址进行过滤

可以用smtpd_recipient_restrictions参数通过发件人在执行RCPT TO命令时提供的地址进行限制。缺省值为:

smtpd_recipient_restrictions = permit_mynetworks, check_relay_domains

可以指定一个或多个参数值,中间用逗号隔开。限制规则是按照查询的顺序进行的,第一条符合条件的规则被执行。可用的规则有:

check_relay_domains:如果符合以下的条件,则接受SMTP连接请求,否则拒绝该连接,可以用relay_domains_reject_code 参数指定返回给客户机的错误代码(缺省为504)。

客户端主机名符合 r e l a y d o m a i n s i n e t i n t e r f a c e s m y d e s t i n a t i o n relay_domains及其子域 目的地为inetinterfaces、mydestination或 virtual_maps
permit_auth_destination:不管客户端的主机名,只要符合以下的条件,就
接受SMTP连接请求:

解析后的目标地址符合 r e l a y d o m a i n s i n e t i n t e r f a c e s m y d e s t i n a t i o n relay_domains及其子域 解析后的目标地址符合inetinterfaces、mydestination或 virtual_maps
reject_unauth_destination:不管客户端的主机名,只要符合以下的条件,就拒绝该客户端SMTP连接请求:

解析后的目标地址符合 r e l a y d o m a i n s i n e t i n t e r f a c e s m y d e s t i n a t i o n relay_domains及其子域 解析后的目标地址符合inetinterfaces、mydestination或 virtual_maps
check_recipient_access:根据解析后的目标地址、父域搜索access数据库。如果搜索的结果为REJECT 或者
‘[45]XX text’ 则拒绝该客户端的连接请求;如果搜索的结果为OK、RELAY
或数字则接受该客户端的连接请求。可以用access_map_reject_code参数指定返回给客户机的错误代码(缺省为554)。

reject_unknown_recipient_domain:如果收件人的邮件地址在DNS中没有相应的A 或 MX 记录则拒绝该客户端的连接请求。可以用unknown_address_reject_code参数指定返回给客户机的错误代码(缺省为450)。

reject_non_fqdn_recipient:如果发件人在执行RCPT TO命令时提供的地址
不是完整的域名则拒绝其SMTP连接请求。可以用The non_fqdn_reject_code参数指定返回给客户机的错误代码(缺省为504)。

posftfix的性能控制

之所以对postfix的性能进行控制,是为了在遇到邮件风暴时保证postfix可以正常运行。通常,我们可以通过对下列postfix
参数的配置来调节postfix的性能,这些参数都是通过mail.cf配置文件进行配置的,修改以后不要忘了运行postfix
reload命令来使配置生效。
1. 进程数限制
  可以通过default_process_limit 参数来控制postfix系统同时可以运行的最大进程数目。缺省值是50个。
2. 对同一目标主机的并发连接限制
  当向同一目标主机发出SMTP连接时,postfix初始化发出两个SMTP连接,如果投递成功则增加并发的SMTP连接数目,遇到拥塞时又减少并发连接的数目。postfix中通过以下的参数对同一目标主机的并发连接进行控制:
initial_destination_concurrency:控制对同一目标主机的初始化并发连接数目。缺省值为2。
default_destination_concurrency_limit:控制初始化连接后对同一目标主机的最大并发连接数目。缺省值为10。
local_destination_concurrency_limit:控制对同一本地收件人的最大同时投递的邮件数目。缺省值为2,因为对本地同一收件人投递邮件时投递工作只能一个接一个的进行,所以设得在大也没用。
3. 对同一封邮件的收件人数目限制
  通过default_destination_recipient_limit参数来控制postfix的投递代理(如
smtp进程)可以将同一封邮件发送给多少个收件人。缺省值为50。也可以用明确指出该投递代理的参数来覆盖该缺省值。如用smtpd_recipient_limit来指定smtp投递代理可以将同一封邮件发送给多少个收件人,该参数的缺省值为1000。
4. 推迟投递控制
  通过defer_transports参数,我们可以推迟投递该参数指定的邮件直到postfix明确的提出投递要求。下面我们看一个例子:
  有一个小型的局域网,用户都将邮件发送给局域网内部的一台postfix邮件服务器,然后通过在该服务器上拨号将邮件发送出去。这时我们可以这样指定该参数的值:
defer_transports = smtp
  该语句表示postfix推迟投递所有的邮件直到执行sendmail -q命令,这样我们就可以在ppp的脚本中加上sendmail -q,以便在拨号成功后让postfix开始投递邮件。

使用图形客户端收发邮件

因为接受协议是pop3/imap所以先安装dovecot服务:yum install -y dovecot
安装完毕后查看端口:
pop3中:未加密是110,加密后是995:
在这里插入图片描述
imap中:未加密的是143,加密后的是993:
在这里插入图片描述
把端口开通:firewall-cmd --add-port=143/tcp , firewall-cmd --add-port=110/tcp , firewall-cmd --add-port=143/tcp --permanent , firewall-cmd --add-port=110/tcp --permanent , firewall-cmd --list-all查看
在这里插入图片描述
因为文件是存放在/etc/dovecot/中,查看支持协议:vi /etc/dovecot/dovecot.conf,找到protocols=。。。把注释去掉:
在这里插入图片描述
然后为了让邮件能正常收发,需要对配置文件做一些必要设置:cd /etc/dovecot/conf.d:
vi 10-auth.conf,找到disable_plaintext_auth=yes,是否允许明文传输,把该行注释取消并把yes改为no:
在这里插入图片描述
vi 10-mail.conf,找到如下图,把注释取消,定义收到邮件后的存放路径:
在这里插入图片描述
vi 10-ssl.conf,找到ssl=required,登录是否ssl加密,把required改为no:
在这里插入图片描述
启动服务并检查是否正常启动:systemctl start dovecot , systemctl is-active dovecot,启动正常后设置为开机自启:systemctl enable dovecot
在这里插入图片描述
windows下载foxmail工具或者类似工具亦可:(配置foxmail之前,需要先搭载邮箱服务器)
打开foxmail添加用户:需要注意的是,这儿填写的pop服务器,windows必须能够正常解析,如果不能正常解析,则无法正常使用
在这里插入图片描述
如果不方便在windows上更改解析,则把pop服务器直接设置为服务器ip地址:
在这里插入图片描述
添加完毕以后邮箱即可正常使用:
在这里插入图片描述
如果想要通过浏览器的方式收发邮件的话,需要安装webmail,工具大致有以下几种:
openwebmail , horde ,zimbra…

如果想要更加深层次的理解邮箱:找一份电子书”postfix权威指南“ 即可。

发布了67 篇原创文章 · 获赞 32 · 访问量 5万+

猜你喜欢

转载自blog.csdn.net/cuichongxin/article/details/103663396