第一章 简介
Email and Internet
MUA(Mail User Agent):用户可以读信,写信。
MTA(Mail Transfer Agent):负责信件的传输,postfix所扮演的角色。
邮件系统的组成
详细介绍了邮件传递的过程,MTA的功能和路由器有点像。MTA发现是本地系统的用户时候,把邮件交给MDA(类似交换机?),MDA将邮件存储在一个专门的地方(message storage 邮箱)。收件人再通过MUA把邮件取走。
主要的E-mail协议
(IETF)Internet Engineering Task Force
(RFC)Request For Comments
SMTP与寄信
MUA-MTA || MTA-MTA
ESMTP可以身份验证
POP/IMAP与收信
MUA —— POP/IMAP Server —— MDA:MUA连接POP/IMAP server,server代为访问MDA中的邮箱,完成取信。
POP:将所有邮件搬回主机。
IMAP:允许用户可要求服务器代为管理邮件。
unix shell可以设定MUA直接读取同一机器上的邮件文件。
Postfix角色
充当MTA:
1. 发件人通过MUA编写邮件通过SMTP提交到MTA
2. 服务器(MTA)之间接受传递邮件
3. 分发邮件到MDA邮箱
Postfix的安全性
Postfix采用预防性的多层防卫措施来确保安全。
模块化设计
Postfix将不同的功能分别写成独立程序,每个Postfix进程的权限都被压缩到仅仅能完成自己的工作,每个进程彼此隔离,不需要任何进程间通信。
Shell与进程
没看懂
与生俱来的安全性
Postfix 程序本身不会将动态数据放在固定容量的缓冲区。
安全防护机制——chroot,来改变应用程序见到的“根目录”。
没看太懂。
第二章 基本概念
Unix的概念
登录名称与UID编号
user-login name-UID对应
虚账户(pseudo-account)
例如:bin,daemon。虚账户不能登录系统,主要用于管理或者限定程序的运行权限。至少需要准备一个需账户给Postfix进程。
标准输入/输出
stdin;stdout;stderr
超级用户
root
命令行提示
一般用户$/%
root #
过长的文字行
信息过长超出屏幕宽度时候,末端加上\表示下一行是前一行的延续。
在线说明书
man maliq
一整页说明,按空格阅读下一页
E-mail 概念
RFC
Request for Comments document 定义Internet的各项标准。
邮件管理员
postmaster:增删邮件账户,过滤垃圾邮件。
拒收和退信
拒收和退信时候应该返回错误报告
信封地址和邮件标题
邮件实际会送到哪是 SMTP client以RCPT TO命令所指定的邮件地址。
邮件地址的“人名部分”
邮件地址:(localpart)@(domain part)
邮件信息格式
RFC2822邮件
header:To、From、Subject
/标头和正文以空白行分裂/
body:正文
SMTP协议
看书
第三章 Postfix结构
Postfix的组件
postfix将不同的功能交由不同的专门程序处理。
master daemon: 主导邮件的处理流程,同时也是其他组建的总管。
邮件如何进入Postfix系统
来自服务器本机的邮件
没看懂
来自网络的邮件
第四章
查询表
查询表格式
key value
postmap -q kdent@example.com /etc/postfix/canonical
重要的考虑事项
myhostname 与 mydomain
…
myorigin
默认值是myhostname
用来自动补齐邮件的网域名称。(kdent@mail.example.com,自动补全@及以后的内容)
mydestination
设定接收邮件
转发控制
Postfix可以转发其他系统的邮件。
限制转发访问
mynetworks_style 松紧服务的地址范围
mynetworks明确指出哪些主机享受转发服务
SMTP身份验证
管理
postfix check查看当前配置文件可能存在的问题…
日志记录
master.cf
收信限制
smtp_recipienet_limit:一封邮件最多几位收件人
message_size_limit: 单封邮件的容量上限
改写地址格式
自动修复人名地址格式
伪装主机名称
隐藏内部主机名称,让邮件看起来像是从网关系统发送出去的一样。
改变投递地址
旧地址-新地址
postfix遇到寄给旧地址的邮件,postfix拒收,并告知对方,邮件应该送给新地址
不明用户
local_recipient_maps Postfix是否接受发送给不明用户的邮件
luser_relay = 将这类邮件集中到特定邮箱
改变根目录 chroot
将进程环境的根目录从’/'更改为文件系统的另一个子目录。
被chroot的进程无法访问该子目录以外的文件系统
在线说明书
第五章 队列管理
incoming
active
deferred
corrupt
hold
五个不同用途的队列,分别有不同的子目录
qmgr的运行原理
mail->incoming->active->deferred||MDA
等待邮件
队列调度
设置邮件再次投递的一些时间参数
投递操作
涉及到内置MDA的一些参数
损毁的邮件
存放故障邮件
错误通知函
通知函的作用:使得管理员知道发生何种类型的错误。
队列管理工具
显示邮件列表
显示邮件的信息 ID啥的
删除邮件
postsuper -d 删除
保留邮件
容纳想无限期留在队列系统里的邮件
postsuper -h
重新排队
postsuper -r ALL
显示内容
postcat -q QID
flush邮件
第六章 E-mail 与 DNS
DNS 概论
每一个网域?至少有两部权威域名服务器。
A:
主机名称:IP地址
CNAME:
别名:规范主机名
MX:
路由器、交换机?
PTR:
IP地址:主机名称
决定邮件路由
通过邮件交换主机(Mail exchanger)收发到该网域的邮件。
邮件交换具有优先级。
Postfix 与 DNS
寄信:resolver
收信: DNS 递送信息
DNS对于寄信程序的影响
Postfix 要进行两次DNS查询,取得MX主机名称,取得IP。
配置文件选项
可以设置对于4xx 和5xx的相应处理。
PTR记录
???
DNS对于收信程序的影响
分别对本地网域、转发网域、虚拟网域、进行设置,是否要接收来自他们的邮件。
常见问题
第七章 本地投递和POP/IMAP
Postfix的投递代理程序
本地邮件:mydestination所列出的网域之一。收件人要有本地的用户账号。
转发邮件:relay_domains所列出的网域。
虚拟网域邮件:第八章。
邮箱格式
mbox
maildir
mbox格式
将同一位用户的所有邮件塞给同一文件里。
每一封邮件以"From "开头,作用为分隔邮件,与邮件标头里的From不是同一个东西。
From 邮件的信封地址(寄件人地址) 收件日期
maildir 格式
使用目录结构来存储邮件。
new/ 已送达但是未阅读的邮件
cur/ 已阅读的邮件
tmp/ 临时文件,短暂存储后送到new/
mbox和maildir的选择
本地邮件的投递操作
mydestination参数的网域会当成本地邮件交给loal MDA投递。
先检查别名表、检查本地用户的.forward文件,
.forward 文件
.forward文件让用户可以设置自己的别名。
阅读Postfix local的在线说明。
别名投递操作
当别名文件指定命令和文件时候?,Postfix必须先将自己的执行身份更改为别名文件的拥有者。
邮件投递操作
设置邮件存储路径
POP与IMAP的比较
POP:适用于不能总保持邮件链接的用户
IMAP: 让所有邮件留在服务器上.下载阅读都会更灵活.
Postfix与POP/IMAP Servers
Postfix收下本地邮件,邮件存储邮箱.POP/IMAP server 从邮箱取出邮件.
LMTP
LMTP是SMTP的精简版…
Postfix与Cyrus IMAP
正式网域:一个系统代表性的网域名称.
虚拟网域:除了正式网域以外的其他网域.
共享网域搭配系统账户
最简单的虚拟网域模式:每个用户都收到每个网域的邮件.
将虚拟网域的名称列在mydestination 参数后,并且为每一位用户创建自己的系统账户.
mydomain = 正式网域.
独立网域搭配系统账户
每个网域都有自己的命名空间
1.virtual_alias_domains = 虚拟网域
2.virtual_alias_maps: hash:/etc/postfix/virtual_alias
独立网域搭配虚拟账户
- postfix将邮件投递到本地系统上的一个虚拟邮箱目,每一个虚拟邮件都有自己的邮箱文件.
- 邮件文件与系统账户不要求存在1:1的对应关系.
做法:
virtuall_mail_domains = 虚拟网域
virtual_mailbox_base = /var/vmail
virtual_mailbox_maps = 虚拟邮箱查询表的位置
邮箱文件拥有权"
一般邮箱文件的拥有者是POP/IMAP server所用的那个账户.
设置继承的系统账户
virtual_uid_maps =
virtual_gid_maps =
虚拟别名
…
第九章 邮件转发
备用交换器
备用交换器接替主交换器承接外来邮件。
转发列表
relay_domains
relay_recipient_maps
快速清空
用来找出寄给特定网域的所有邮件。
flush管理relay_domains和fast_flush_domains下的网域
传输表
Postfix无视DNS MX记录,让对应网域的邮件按传输表指定的方式传输。
transport_maps: 传输表。
传输表内容:
(邮件地址\网域名称:(transport:host:port))
延迟投递时间
暂缓转发邮件
设置master.cf, defer_transports, transport_maps,编辑传输表
暂缓投递外地邮件
defer_transports = smtp
入站邮件网关
mail gateway: 收下邮件并且进行转发。一是一个网络到另一个网络的必经之路(路由器),另外是协议转换。
出站邮件网关
内部邮件系统将寄往外地的邮件通过网关系统,寄送。
- smtp
- mynetworks
- relayhost
- postfix reload