postfix main.cf

一、设定邮件主机的识别身分(重要)

  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, www.$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

此条目发表在db分类目录,贴了标签。将固定链接加入收藏夹。