postfix 配置 main.cfpostfix 配置 main.cfpostfix 配置 main.cfpostfix 配置 main.cf
  • 首页
  • 博客
  • 文件
  • 书签
  • 分析
  • 登录
Search
Generic filters

postfix 配置 main.cf

Published by admin at 2022年2月9日
Categories
  • Linux
Tags

Main.cf

# See /usr/share/postfix/main.cf.dist for a commented, more complete version

# Debian specific: Specifying a file name will cause the first

# line of that file to be used as the name. The Debian default

# is /etc/mailname.

#用于限定系统所接受的最大的单封邮件长度。限制postfix队列文件的大小。缺省值为#10240000 bytes。

message_size_limit = 1572864000

#限制信头长度。缺省值为102400bytes

#header_size_limit =

#这是用于设定当SMTP连接来时,要显示的版本资讯

smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)

# biff是一个能在收到新邮件时,发出通知给本地用户的小程序。如果你的用户不会登录邮#件系统,建议你关掉biff通知,因为这有助于提升邮件系统得效率。

biff = no

# appending .domain is the MUA's job.

append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings

#delay_warning_time = 4h

# TLS parameters

smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem # TLS需要的ssl证书位置

smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key # TLS需要的ssl私钥位置

smtpd_use_tls=yes      #用ssl加密认证SMTP会话

smtpd_tls_session_cache_database = btree:${queue_directory}/smtpd_scache

smtp_tls_session_cache_database = btree:${queue_directory}/smtp_scache

#sasl parameters

smtpd_sasl_type=dovecot      #使用dovecot进行验证

smtpd_sasl_auth_enable = yes      #启用sasl验证

smtpd_sasl_path= private/auth    #

#这个参数限制了谁可以用你的邮件服务器中继和转发邮件。

smtpd_recipient_restrictions=permit_mynetworks,permit_sasl_authenticated,reject_unauth_destination

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for

# information on enabling SSL in the smtp client.

#设置您的主机名称,且这个设置值被后续很多其他的参数所引用

myhostname = localhost

#参数决定了Postfix 可以帮忙传递哪些域的邮件

#relay_domains = $mydestination, 126.com

# mynetworks 参数指定你所在的网络的网络地址,postfix系统根据其值来区别用户是远程的还是本地的,如果是本地网络用户则允许其访问。你可以用标准的A、B、C类网络地址,也可以用CIDR(无类域间路由)地址来表示, ( 注:请注意,如果你没有设定 mynetworks 的话,一定要将 mynetworks_style 设定为 host !不然你的 IP 所在的子网域的 IP 会被自动的认为是‘合法的’!)

mynetworks = 127.0.0.0/8 ,192.168.1.0/24

#用来指定含有用户别名定义的文件路径

alias_maps = hash:/etc/aliases

#用来指定别名表数据库文件路径

alias_database = hash:/etc/aliases

#这个项目用于设置邮件标头上面的Mail from地址,即代表本MTA传出去的信件将以此设置值为准。

myorigin = /etc/mailname

#mailbox_command = procmail -a "$EXTENSION"

#default_transport = smtp

#指定postfix在进行邮件投递时使用与Qmail类似的Maildir方式,此方式每封邮件是一个独立的文件,比较易于管理,另外IMAP默认也是在用户目录的Maildir中访问邮箱的。在选Maildir方式时,mailbox_command选项应该置空。

#home_mailbox = Maildir/

#设置“能够收信的主机名称”, 你的 postfix 只有在发现 mydestination 这个项目中有写入

#的主机名称做为收信主机时,才会将该封信件收下来!

mydestination = debian.domain, localhost, localhost.localdomain, localhost

#来决定你的邮件是不是直接传递到internet还是通过其它的主机进行传递

relayhost =

mailbox_size_limit = 0

#允许使用扩展的用户名

recipient_delimiter = +

#指定Postfix邮件系统监视的网络接口

inet_interfaces = all

#"virtual_gid_maps"和"virtual_uid_maps"是postfix用户的gid和uid

virtual_uid_maps = static:5566

virtual_gid_maps = static:5566

# virtual_mailbox_maps参数定义虚拟邮箱查询表位置

virtual_mailbox_maps = mysql:/home/postfix/-mailbox-maps.cf

#这个参数是用在虚拟投递代理的。它指出了一个域名列表,拥有这些域名的电子邮件才能够被postfix的虚拟投递代理处理。它也是代替在$mydestination参数指出一长串的域名。

virtual_mailbox_domains = mysql:/home/postfix/-mailbox-domains.cf

#virtual_alias_maps参数指向一个虚拟别名表

virtual_alias_maps = mysql:/home/postfix/-alias-maps.cf

#virtual_alias_maps = mysql:/home/postfix/-alias-maps.cf,mysql:/home/postfix/-email2email.cf

#通过postfix 发送出去的邮件

sender_bcc_maps = mysql:/home/postfix/-mail-watch.cf

#通过postfix 接收到的邮件

recipient_bcc_maps = mysql:/home/postfix/-mail-watch.cf

#指定dovecot投递代理来负责投递

virtual_transport = dovecot

dovecot_destination_recipient_limit = 1

#content_filter = smtp-amavis:[127.0.0.1]:10024

#receive_override_options = no_address_mappings

#可以同时采用多个备用的邮件中继

smtp_fallback_relay =

# transport_maps参数可指向一个或多个传输表

transport_maps = hash:/home/postfix/transport

-----------------------------------------------------

# Postfix 主要的组态档,删除了多数说明文字,
# 并且尝试依照最常用的邮件主机设定来依序设定与说明,
# 许多不常用的设定并未列出。
### 0. 几个 Postfix 主要的设置参数,一般状况下不需要更改。
queue_directory = /var/spool/postfix
command_directory = /usr/sbin
daemon_directory = /usr/libexec/postfix
mail_owner = postfix
##
# 一、设定邮件主机的识别身分(重要)
# myhostname 主机名称:如果系统设置得当,应该不用设置,系统会以gethostname()取得
# mydomain 网域名称:预设会以myhostname第一个点之后的作为domain名称
# myorigin 补齐缺少的资讯:自动补齐资讯所用的,通常使用网域名称
# mydestination 本地网域:指Postfix应该视为「本地网域」的所有网域名称
# (本地网域的部份会后续在设定)
#myhostname = host.domain.tld
#mydomain = domain.tld
myorigin = $mydomain
##
# 二、设定 Postfix 能使用的网路介面(重要)
# (如果是对外服务的邮件主机,就必须要设定为all,预设为localhost)
inet_interfaces = all
#inet_interfaces = $myhostname
#inet_interfaces = $myhostname, localhost
#inet_interfaces = localhost
##
# 三、先设定简易的代转(Relay)管控
# 3.1 mynetworks_style 提供三种简易设定型态
# class =>与伺服器位于同一级IP网路的主机都可以使用代转服务
# subnet =>所在网域的任一个IP都可以使用代转服务
# host =>仅开放localhost为信任‧可代转的主机
#mynetworks_style = class
#mynetworks_style = subnet
#mynetworks_style = host
# 3.2 mynetworks 明确设定可使用relay的主机范围
# (优先于mynetworks_style,建议採用此种设定法)
mynetworks = 192.168.0.0/24, 192.168.1.0/24, 127.0.0.0/8
#mynetworks = $config_directory/mynetworks
#mynetworks = hash:/etc/postfix/network_table
##
# 四、设定Postfix会收下信件的网域
# Postfix会收下四种特定网域的信件,除了main.cf中的设定外,
# 也应该被正确的设置在DNS中的MX纪录中。
# (1)本地网域(local domain)=>由mydestination参数设定
# (2)代转网域(relay domains)=>由relay_domains参数设定
# (3)虚拟网域(virtual domains)之虚拟别名(virtual aliases)
# =>由 virtual_alias_domains参数设定
# (4)虚拟网域之虚拟信箱(virtual mailboxes)
# =>由 virtual_mailbox_domains参数设定
# (上列四种设定不应重複,网域已设为本地网域,就不应该出现在代转网域)
# 4.1 设定本地网域
#mydestination = $myhostname, localhost.$mydomain
mydestination = $myhostname, localhost.$mydomain, $mydomain
#mydestination = $myhostname, localhost.$mydomain, $mydomain,
# mail.$mydomain, ftp.$mydomain
# 4.2 设定代转网域
# Postfix 预设会提供代转服务的设置:
# (代转服务=该网域并非由本Postfix MTA所管控,但可以代转发)
# - 从信任的客户端(指ip符合$mynetworks)寄出到任何目的地
# - 从非信任的客户端寄出到符合$relay_domains或其下次网域的目的地
# 若信件终点站是relay_domains参数中的网址,被视为外地邮件,
# 由 relay MDA来执行投递作业。
# relay_domains 预设值= $mydestination.(主机名称)
#
# 4.3 设定虚拟别名‧网域
#
# 4.4 设定虚拟信箱‧网域
#
##
# 五、改写位址格式
# 5.1 Postfix预设会以$myorigin或mydomain附加到不完整的电邮位址。
# 5.2 正式位址
# 另外提供了一种正式位址代换的机制 canonical map(正格表)
# (1)修改 /etc/postfix/canonical
# (2)再执行 postmap /etc/postfix/canonical
# (3)记得要重新载入 postfix reload
# 正格表的撰写方式:
# eric@example.com eric.wu@example.com
# eric@example.com eric@oreilly.com
#
# canonical_maps = hash:/etc/postfix/canonical
#
# Postfix也提供额外的参数设置特定的位址
# sender_canonical_maps 仅修改发信者位址
# recipient_canonical_maps 仅修改收件者位址
# (适用顺序为:sender->recipient->canonical)
#
# 5.3 伪装主机名称
# 用于隐藏内部主机名称
# masquerade_domains = example.com
#
# 5.4 改变投递位址
# 拒收某人或某网域信件,并回覆一封告知
# relocated_maps = hash:/etc/postfix/relocated
# relocated 撰写范例:
# kdent@ora.com kdent@oreilly.com
# @example.com oreilly.com
#
# 5.5 不明使用者
# 拒绝不存在的本地帐户/「不明使用者」(unknown user)
#unknown_local_recipient_reject_code = 550
unknown_local_recipient_reject_code = 450
# 如果收信地址的人名部份,在任何对照表、别名表、系统帐户都查不出来,
# 这个人会被视为「不明使用者」(unknown user),系统会拒收。
# 如果希望蒐集这类信件,使用下列设定,并指定集中收集的信箱
# local_recipient_maps =
# luser_relay = someuser
# (上列第一个参数维持空白,第二个参数指定一个别名或实际帐户)
# 5.6 chroot
# 最安全的设置方式是使用改变根目录(chroot),但非常複杂;
# postfix安装时预设并未使用 chroot,记得去检查 master.cf档桉,
# 建议先取消 chroot,除非您真的很厉害。
##
# 六、一些针对邮件限制的特殊设定
# 限制一封信最多可以有几位收信者,预设值是1000
# smtpd_recipient_limit = 1000
# 限制单封信件的体积上限,预设值为 10 MB(改为20MB)
message_size_limit = 20480000
##
# 七、别名档资料库设定(aliases)
# 使用default_database_type参数决定资料库格式,预设为 hash
alias_maps = hash:/etc/postfix/aliases
alias_database = hash:/etc/postfix/aliases
# (安装时随附的别名档范本,已经预设了一组惯例别名,最后都指向root,
# 仅需要设置 root 别名,指向一个平常会收取信件的帐户信箱即可)
##
# 八、本地信件与信箱设置
# 预设使用的信箱格式是mbox,下列的参数设置,如果结尾没有"/",
# 就表示是使用mbox;如果结尾跟着"/",就是使用 maildir格式。
# (建议还是使用最通用的mbox,与其他程式的相容性最高)
#
# 所有本地收件人的名称,都必须列在local_recipient_maps参数所指的表,
# 预设值是指向Unix系统的密码档与别名表,通常不需要修改它。
# local_recipient_maps = proxy:unix:passwd.byname $aliase_maps
#
# 信箱投递作业
#mail_spool_directory = /var/mail
#mail_spool_directory = /var/spool/mail
#
# 可以要求 Postfix 将信件放在使用者的主目录下
home_mailbox = Mailbox
#home_mailbox = Maildir/
#
# 用于将邮件投递到信箱的外部命令(通常用来过滤防堵邮件)
#mailbox_command = /usr/bin/procmail
#mailbox_command = /some/where/procmail -a "$EXTENSION"
# 用于执行信箱投递作业的传输服务
#mailbox_transport = lmtp:unix:/file/name
#mailbox_transport = cyrus
#
##
# 八、启用 SASL 验证(服务于远端、外部网域使用的认证机制)
# 决定 Postfix SMTP server 是否要支援 SASL 验证
# smtpd_sasl_auth_enable = yes
# 设定信件收件的限制规则
# smtpd_recipient_restrictions = permit_mynetworks,
# permit_sasl_authenticated, reject_unauth_destination
# 确认已经通过认证的网域(这条有点疑问...)
# smtpd_sasl_local_domain =
# 限制某些登入的方式(拒绝匿名登入)
# smtpd_sasl_security_options = noanonymous
##
# 九、邮件代转设定(交换站、入境、出境闸道)
# (下列程序示范如何设定 gw.abc.com,让它将邮件交给正确的内部伺服器)
# (1)hr.abc.com, sales.abc.com的DNS MX均指向 gw.abc.com
# (2)编辑gw的main.cf档,将子网域列入 relay_domains 参数
# relay_domains = hr.abc.com, sales.abc.com
# (3)设定正确的传输表(transport map)
# transport_maps = hash:/etc/postfix/transport
# (4)编辑传输表(编完记得postmap一下)
# hr.abc.com relay:[m1.abc.com]
# sales.abc.com relay:[m2.abc.com]
# (5)彙整m1,m2的合法信箱名单成一个受理名单,放在gw上
# relay_recipient_maps = hash:/etc/postfix/relay_recipients
# (怎么收集、更新,是个大问题)
# (6)postfix reload
#
# 设定出境邮件闸道(将外地邮件交给闸道系统代为递送)
# relayhost = $mydomain
# relayhost = gateway.my.domain
# relayhost = uucphost
# relayhost = [an.ip.add.ress]
#
# 拒绝不知名用户的代转 REJECTING UNKNOWN RELAY USERS
# (其实是将所有合法使用者放入一个名单中)
#relay_recipient_maps = hash:/etc/postfix/relay_recipients
##
# 十、设定 Open Relay Data Base
# smtpd_client_restrictions = hash:/etc/postfix/access,
# reject_rbl_client relays.ordb.org,
# reject_rhsbl_client dsn.rfc-ignorant.org
##
# 除错管理
debug_peer_level = 2
#debug_peer_list = 127.0.0.1
#debug_peer_list = some.domain
# debugger_command =
# PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin
# xxgdb $daemon_directory/$process_name $process_id & sleep 5
# 如果并未安装X-windows可以改用下列:
debugger_command =
PATH=/bin:/usr/bin:/usr/local/bin; export PATH; (echo cont;
echo where) gdb $daemon_directory/$process_name $process_id2>&1
>$config_directory/$process_name.$process_id.log & sleep 5
##
# 其他、安装时的一些设置资讯
#
sendmail_path = /usr/sbin/sendmail.postfix
newaliases_path = /usr/bin/newaliases.postfix
mailq_path = /usr/bin/mailq.postfix
setgid_group = postdrop
manpage_directory = /usr/share/man
sample_directory = /usr/share/doc/postfix-2.0.16/samples
readme_directory = /usr/share/doc/postfix-2.0.16/README_FILES
##

-------------------------------------------------------------------------------------------------------------------

基本配置

介绍

postfix的main.cf文件支持上百个配置参数。幸运的是,所有的参数都有比较合理的默认值。在大多数情况下,你只需要配置2到3个参数值就可以启用postfix邮件系统了。下面的这个链接是postfix配置文件的简要介绍。

Postfix配置文件

接下来的内容假设你已经安装好Postfix系统,不管你是通过源码编译安装还是使用已编译好的版本安装的。

这篇文档包括了postfix的基本配置。关于如何把postfix配置成一个邮件中转器(mailhub)或邮件防火墙或拨号的客户端等特定的应用,请参见STANDARD_CONFIGURATION_README这个文件。在你掌握以下的基本参数之前,暂时可以不用去了解STANDARD_CONFIGURATION_README的相关内容。

第一个参数是制定邮件系统的身份以及在网络中的作用

出站邮件的域名

接收什么域名的邮件

中继何种客户端的邮件

把中继邮件传递到什么目的地

传递的方法:直接还是间接

许多其他配置参数的默认值都是从这儿继承来的

下面的这个参数控制着何时将邮件传递到本地postmaster
什么错误发送错误报告给postmaster

如果你的postfix是在一个代理,NAT的后面或者你已启用了一个备份的MX,确保正确的设置下面的参数;
Proxy/NAT外部网络地址

Postfix守护进程运行在后台,把遇到的问题以及正常的活动记录到syslog日志中。这里有一些事情需要注意一下:
你需要postfix记录什么样的日志

如果你的postfix有强烈的安全需求,你可能想让postfix守护进程运行在chroot环境下
postfix守护进程运行在chroot下

如果你的postfix运行在一个虚拟的网络接口上,或者如果你的虚拟接口上还同时运行着其他的邮件服务,你将需要列在下面的参数:
主机名
域名
网络地址

postfix配置文件
默认情况下,postfix配置文件在/etc/postfix目录下。两个最重要的文件是main.cf和master.cf;这两个文件的所有者必须是root用户。赋予其他用户对main.cf或master.cf文件的写入权限意味着赋予了该用户root权限

在/etc/postfix/main.cf文件中,你将需要设置最少的参数,postfix配置参数个数类似于shell的变量,但有两个不同之处:第一个是postfix不能识别引号;

你能像下面的方式制定配置参数:

/etc/postfix/main.cf:
parameter = value

你也能在参数钱使用$符号
/etc/postfix/main.cf:
other_parameter = $parameter

你可以在$parameter被赋值前使用$parameter(这是postfix与unix脚本变量的第二个不同)。postfix配置参数使用了松散的赋值,直到该值被使用时才会被检查

postfix使用数据库文件来实现访问控制,地址重写等目的。DATABASE_README文件介绍了postfix怎样与Berkeley DB, LDAP or SQL 协同工作。这儿有一个通用的示例:

/etc/postfix/main.cf:
virtual_alias_maps = hash:/etc/postfix/virtual

当改变了main.cf或master.cf文件中的值时,一定要以root身份执行postfix reload命令来刷性邮件系统

# postfix reload

出站邮件使用什么域名
myorigin参数指定了邮件发送者的域名。默认情况下是使用本地的机器名($myhostname)。如果你运行的不是一个很小的邮件系统,你可能想改成$domain。

为了保证发送者和接受者地址的一致性,myorigin也应该为那些接受者地址不规范的邮件附加上域名

示例(只需要指定一个即可)
/etc/postfix/main.cf:
myorigin = $myhostname (以 " user@$myhostname"发送邮件,默认设置是这种形式)
myorigin = $mydomain   (以 " user@$mydomain"发送邮件,推荐使用这个形式)

接收何种域名的邮件
mydestination参数指定:postfix把什么域名的邮件传送到本地,而不是其他的机器。默认情况下,postfix接收发往本机的邮件。VIRTUAL_README文件介绍了如何为postfix配置主域。

你能指定零个或过个域名,它们之间用空格或逗号隔开。/file/name的方式被它的内同代替;

重要提示:如果你的机器是整个域的邮件服务器,你必须指定$mydomain的值。

示例1:默认设置
/etc/postfix/main.cf:
mydestination = $myhostname localhost.$mydomain localhost

示例2:域范围的邮件服务器
/etc/postfix/main.cf:
mydestination = $myhostname localhost.$mydomain localhost $mydomain

示例3:多个A记录的主机
/etc/postfix/main.cf:
mydestination = $myhostname localhost.$mydomain localhost
 www.$mydomain  ftp.$mydomain

注意事项:为了避免邮件传递的循环,你必须列出机器的主机名,包括:$myhostname和localhost.$mydomain

什么客户端可以中继邮件
默认情况下,postfix将信任网络的邮件传递到任何目的地。信任网络定义在mynetworks参数中。postfix默认信任与postfix在同一个客户端。

重要提示:如果你的机器是连接到广域网中,你的默认信任网络范围将太广,容易被恶意中继

示例(仅需指定一行即可):
/etc/postfix/main.cf:
mynetworks_style = subnet  (这是默认设置,信任postfix的网段)
mynetworks_style = host    (最安全的,仅信任postfix本机)
mynetworks = 127.0.0.0/8   (最安全的,仅信任postfix本机)
mynetworks = 127.0.0.0/8 168.100.189.2/32 (这里指定了信任的网段)

你能在main.cf中指定信任的网络,或者你能让postfix为你工作。默认是让postfix工作。这个结果取决于mynetworks_style的参数值

·当postfix只传递本机的纸时使用"mynetworks_style = host"

·当postfix转发与postfix的IP同网段的邮件时,使用"mynetworks_style = subnet" 。在linux系统上,使用"ifconfig"来检查ip地址

·当postfix转发与postfix的ip在同一类网络(即A/B/C类网)中的邮件时,使用"mynetworks_style = class",不要在拨号的postfix系统中使用该种方式,因为这会导致你的postfix信任ISP的整个网络。这种情况下,你可以使用mynetworks参数明确的指出信任的网段

作为mynetworks_style的另外一种方式,你可以使用mynetworks手动指定信任的网络(注意:设置了mynetworks会导致postfix忽略mynetworks_style中指定的值)。如下面的示例:
/etc/postfix/main.cf:
mynetworks = 168.100.189.0/28, 127.0.0.0/8
你也可以在这里指定一个信任网络的文件地址。然后把信任的网络写入该文件。而不需要把信任的网络一个个的写入main.cf文件中。

中继邮件到什么目的地
默认情况下,postfix仅将陌生人的邮件传递到信任的远处目标域。信任的远处目标域定义在relay_domains参数中。默认是在mydestination中的所有域及其子域。

示例(仅需指定一个即可):
/etc/postfix/main.cf:
relay_domains = $mydestination (默认值)
relay_domains =           (安全的,不转发任何陌生人的邮件)
relay_domains = $mydomain (转发mydomains及其子域的邮件)

传递的方法:直接或间接
默认情况下,postfix直接把邮件传递到internet上。有些情况下,这是不可行的。例如,你的系统在非工作时间需要关闭,或者postfix在防火墙的后面,或者你的网络提供者不允许你把邮件直接发送到internet上。在这些情况下,你需要配置postfix通过一个中继主机间接的传递邮件。

示例(仅需指定一个即可):
/etc/postfix/main.cf:
relayhost =                   (默认设置,直接传递)
relayhost = $mydomain         (通过本地的邮件hub传递)
relayhost = [mail.$mydomain]  (通过本地的邮件hub传递)
relayhost = [mail.isp.tld]    (通过isp供应商的邮件hub传递)

这里使用中括号[]是为了忽略dns的mx记录查找。如果你不知道这个中括号的含义也没有关系,仅需确保为邮件hub主机名加上中括号[],否则会导致你的邮件被错误的传递

STANDARD_CONFIGURATION_README文件包含了更多关于防火墙和拨号网络的提示。

发送错误报告给postmaster
你应该为postmaster设置一个别名,以便错误报告发送到别名邮箱横中。postfix邮件系统必须要有postmaster地址存在,以便系统能够发送错误报告。当升级aliases(5)的时候,确保超级用户的别名存在。
/etc/aliases:
postmaster: you
root: you

在改变了aliases文件后,需执行“newaliases”命令。aliases文件默认在/etc目录下,你可以更改aliases的位置。使用postconf alias_maps找到该文件。

postfix系统把错误发送给postmaster。你可能只关心部分的错误,所以,需要配置错误报告的级别。默认只报告严重的错误(资源和软件错误)给postmaster:

默认设置:
/etc/postfix/main.cf:
notify_classes = resource, software

The meaning of the classes is as follows:
错误类型的解释如下:
(略)

代理/NAT外部网络地址
一些邮件服务器通过proxy/NAT连接到邮件服务器。这意味着Internet上的系统只能连接到NAT/proxy,而不是连接到邮件服务器上。NAT/proxy把外部的邮件连接重定向到邮件服务器上,但是postfix不知道这个连接重定向的过程。

如果你的postfix运行在proxy或者NAT后面,你需要配置proxy_interfaces参数,同时指定所有的外部proxy/NAT地址,以便postfix从这些地址接收邮件。你可以使用IP地址来代替主机名。

重要提示:你必须指定proxy/NAT的外部地址,当你的系统是一个备份的MX主机时,否则当主MX故障时,会出现邮件的循环。

示例:在NAT后的主机是备份的MX主机
/etc/postfix/main.cf:
proxy_interfaces = 1.2.3.4 (1.2.3.4是proxy/NAT的公网ip地址)

你需要知道哪些postfix日志内容
postfix守护进程运行在后台,它通过syslog守护进程记录postfix出现的错误以及正常的活动。syslogd进程依据类别和严重性来筛选事件,然后把它们添加到日志文件中去。日志文件的类别,级别和日志文件名通常是在/etc/syslog.conf文件中指定的。下面是最简单的日志文件
/etc/syslog.conf:
mail.err                                    /dev/console
mail.debug                                  /var/log/maillog

在改变syslog.conf文件后,发送一个"HUP"信号给syslogd进程。

重要提示: 许多的syslogd应用程序不会主动的创建文件。你必须在重启syslogd进程前创建相关的日志
文件。

重要提示: 在linux系统上,你需要在路径名前加一个"-"符号,例如:-/var/log/maillog,否则syslogd进程将会抢夺postfix的系统资源,最终影响postfix系统的运行效率。

如果顺利的话,问题的数量比较小,但是在日志文件循环前运行下面的内容将是一个好的习惯。
# postfix check
# egrep '(reject|warning|error|fatal|panic):' /some/log/file

第一个命令(及postfix check)将触发postfix报告文件的允许/所有不一致的地方。

第二个命令将查找postfix的错误报告,报告怎样更有效的阻止中继邮件和垃圾邮件。这个内容可能会很多。你可以根据这些信息过滤掉不期望的内容。

DEBUG_README文件描述了“警告”等错误标签的含义

运行postfix守护进程的chrooted
postfix守护进程可以运行在一个chroot环境下(这个在master.cf文件中配置)。这个进程将运行在一个固定的没有什么特权的环境下,访问postfix队列目录的权限(/var/spool/postfix)也被限制.这将有效的阻止黑客的入侵。

其他内容(略)

主机名
主机名参数使用FQDN的值.$myhostname将出现在postfix许多参数默认值里。

默认情况下,myhostname设置为本地机器名。如果你的本地机器名不是规范的FQDN,或者你在一个虚拟的接口上运行postfix,你将需要为postfix指定一个FQDN。

如果你在main.cf中指定了mydomain,那么postfix将会使用它的值为myhostname参数产生一个FQDN默认值

示例:

/etc/postfix/main.cf:
myhostname = host.local.domain (machine name is not FQDN)
myhostname = host.virtual.domain (virtual interface)
myhostname = virtual.domain (virtual interface)

域名
域名参数指定$myhostname的父域。默认情况下,它是$myhostname去掉第一个点号前的内容。

相反的,如果你在main.cf中指定了mydomain值,postfix将用该值为myhostname产生一个默认的FQDN。

示例:
/etc/postfix/main.cf:
mydomain = local.domain
mydomain = virtual.domain (virtual interface)

网络地址
inet_interfaces蚕食指定了postfix监听的网络地址;传递到 user@[network address]的邮件会被传到本地,其效果等同于该地址列在了$mydestination中一样。

你能在master.cf预先设置一个ip地址,从未忽略inet_interfaces的设置
postfix默认监听所有活动的端口。如果你的postfix运行在虚拟的接口上,你需要指定监听的端口。

重要提示:如果你的MTAs运行在虚拟的接口上,你必须为这个MTAs明确的指定inet_interfaces值。

示例:默认的设置。
/etc/postfix/main.cf:
inet_interfaces = all

例如:主机运行了多个虚拟邮件服务器。对每个postfix实例,可以仅指定下面的一个
/etc/postfix/main.cf:
inet_interfaces = virtual.host.tld         (virtual Postfix)
inet_interfaces = $myhostname localhost... (non-virtual Postfix)
注意:在更改inet_interfaces参数后,需要重启postfix服务器。

发表回复 取消回复

您的电子邮箱地址不会被公开。 必填项已用*标注

Categories

  • 猫
  • Python
  • MySQL
  • Django
  • Html/CSS
  • JavaScript
  • Vue
  • RegExp
  • php
  • Practice
  • Virtualization
  • Linux
  • Windows
  • Android
  • NAS
  • Software
  • Hardware
  • Network
  • Router
  • Office
  • WordPress
  • SEO
  • English
  • Games
  • Recipes
  • living
  • Memorandum
  • Essays
  • 未分类

归档

©2015-2022 Alaica Blog support@alaica.com