Postfix:MTA(邮件传输代理)软件

一、postfix背景及优点

postfix的为了替代传统的sendmail,基于GPL协议开发的一款MTA(邮件传输代理)软件。相较于sendmail,postfix在速度,性能,安全性和稳定性上都更胜一筹。

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的安装使用

redhat6.0以上版本应该是默认集成了postfix服务的,假如没有安装的话,可以手动安装。

rpm -qa | grep postifx   #查看是否安装

yum install postfix    # 安装

Postfix邮件的log位置是:/var/log/maillog

发送成功的话,会返回250和OK,也可以去自己的邮件客户端查收。

三、配置

vi /etc/postfix/main.cf

myhostname = sample.test.com  ← 设置系统的主机名

mydomain = test.com  ← 设置域名(我们将让此处设置将成为E-mail地址“@”后面的部分)

myorigin = $mydomain  ← 将发信地址“@”后面的部分设置为域名(非系统主机名)

inet_interfaces = all  ← 接受来自所有网络的请求

mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain  ← 指定发给本地邮件的域名

home_mailbox = Maildir/  ← 指定用户邮箱目录

四、postfix组件结构

1、 postfix中队列状态共有五种,分别如下:

收件:incoming

活动:active

延迟:deferred

故障:corrupt

保留:hold

2、主要有以下组件:

master组件:主导邮件处理流程、其他组件的总管。配置文件:main.cf和master.cf。

qmgr组件:队列管理器。各个postfix组件之间的合作依靠队列交换邮件。

sendmail组件:服务器本机发送邮件。

postdrop组件:将邮件存入postfix队列目录下的maildrop/子目录。

pickup组件:监视maildrop/子目录,读出新邮件,交给cleanup组件。

cleanup组件:补足遗漏的标头字段。

trivial-rewrite组件:地址处理,改成标准格式。决定路由信息,包括传输方法、下一站以及收件人地址。 

smtpd组件:接收来自网络的邮件,交给cleanup组件处理。

defer组件:邮件被延时时产生通知函。

bounce组件:邮件无法送达目的地时产生通知函。

dns组件:查找符合条件的邮件服务器。 

四、postfix起停及查看操作

     service postfix start

    service postfix status

    service postfix stop

五、配置文件详解

       postfix的配置文件是main.cf

#别名数据库(postalias/newaliases 命令生成)

alias_database = hash:/etc/postfix/aliases

#别名表,列出local mda 所使用的别名数据库

alias_maps = hash:/etc/postfix/aliases

#退回的邮件重新投递的最长时间

bounce_queue_lifetime = 1d

#支持非标准验证规定的行为

broken_sasl_auth_clients = yes

#postfix命令目录

command_directory = /usr/sbin

#postfix配置文档目录

config_directory = /etc/postfix

#配置内容过滤 amavis

content_filter = smtp-amavis:[127.0.0.1]:10024

#postfix 的各个服务器程序目录

daemon_directory = /usr/libexec/postfix

#

data_directory = /var/lib/postfix

#

debug_peer_level = 2

#重复邮件

enable_original_recipient = no

#

html_directory = /usr/share/doc/postfix-2.6.2-documentation/html

#

mail_name = Postfix – welcome mail.xmall.com

#以此参数指定的系统账户,作为队列文件的拥有者以及postfix daemon 进程的运行身份

mail_owner = postfix

#单封邮件大小限制,单位字节

mailbox_size_limit = 150242880

#

mailq_path = /usr/bin/mailq.postfi

#manpage 目录

manpage_directory = /usr/share/man

#postfix在放弃投递而返回不可投递信息前,被延迟邮件再deferred邮件队列中的生存时间

maximal_queue_lifetime = 1d

#限制单封邮件的最大长度,单位字节

message_size_limit = 150242880

#设置”本地网域”

mydestination = $mynetworks $myhostname

#完整主机名称(主机名称+网域名称)

myhostname = mail.xmall.com

#邮件系统的网域名称

mydomain = xmall.com

#附加到只含人名部分的,不完整邮件地址的网域名称

myorigin

#列出可通过本邮件系统寄出邮件的网络地址或ip地址

mynetworks = 127.0.0.1

#兼容sendmail,用于重建别名数据库的newaliases程序路径

newaliases_path = /usr/bin/newaliases.postfix

#postfix 队列的主目录

queue_directory = /var/spool/postfix

#

readme_directory = /usr/share/doc/postfix-2.6.2-documentation/readme

 

receive_override_options = no_address_mappings

#样本配置文件目录

sample_directory = /etc/postfix

#供脚本或命令行用来寄送邮件

sendmail_path = /usr/sbin/sendmail.postfix

#用来提交邮件或管理队列的组标识符

setgid_group = postdrop

#

show_user_unknown_table_name = no

#smtp 问候信息

smtpd_banner = $myhostname ESMTP $mail_name

#当客户端引发错误时,postfix 的初始等待时间

smtpd_error_sleep_time = 0s

#收件人限制条件

smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unauth_destination, reject_unauth_pipelining, reject_invalid_hostname, check_policy_service inet:127.0.0.1:10030

#启动sasl 验证

smtpd_sasl_auth_enable = yes

#

smtpd_sasl_local_domain = $myhostname

#指定密码验证机制(除noanonymous) 所有可用机制

smtpd_sasl_security_options = noanonymous

#设定寄件地址与sasl登录身份的对应关系,只能使用本域地址避免使用其他寄件地址!

smtpd_sender_login_maps = mysql:/etc/postfix/mysql_virtual_sender_maps.cf, mysql:/etc/postfix/mysql_virtual_alias_maps.cf

#发件人限制条件

smtpd_sender_restrictions = permit_mynetworks, reject_sender_login_mismatch, reject_authenticated_sender_login_mismatch, reject_unauthenticated_sender_login_mismatch

#

unknown_local_recipient_reject_code = 550

#指向含有“虚拟别名地址”与“实际收件地址”对应关系的查询表

virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf

#虚拟网域查询表

virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf

#虚拟邮箱查询表

virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf

#用于投递邮件到虚拟邮箱地址的默认传输服务(虚拟mda)

 

六、收发邮件处理过程

整个处理流程分为三个阶段:接收邮件、将邮件排入队列、递送邮件。每个阶段由一组独立的Postfix组件负责。当一封邮件被收下并排入队列之后,队列管理器(Queue Manager)会启动适当的MDA,将邮件送到终点。

七、postfix命令行工具

postalias:创建或查询别名数据库。

postcat:显示出队列文件的内容,让管理员可观察滞留在队列里的邮件内容。

postconf:显示或改变postfix参数。

postdrop:将邮件放回到maildrop目录,由postfix重新进行投递操作。

postfix:启动或停止postfix系统,或重新读取配置文件。

postkick:对特定postfix服务发出请求。

postlock:锁定特定文件,确保能够独占访问。

postlog:将特定的信息记录到系统日志文件中。

postmap:创建查询表的DB数据库或查询查询表内容。

postqueue:让一般的用户能够有限度地访问postfix队列。

postsuper:供管理员访问postfix队列。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

C-Jonn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值