Postfix

Postfix

Postfix

postfix介绍

postfix是一个邮件代理服务器,可以自己给其他用户发邮件,也可以做中继转发,和mailman作为邮件列表不一样哈, 来自wiki的来自官方的解释: attempts to be fast, easy to administer, and secure, while at the same time being sendmail compatible \ enough to not upset existing users. Thus, the outside has a sendmail-ish flavor, but the inside is completely different.

配置

参考leannot官方中文笔记

出站邮件中使用什么域名

是myorigin变量,默认是$myhostname, 最好改成$mydomain /etc/main.cf myorigin = $myhostname # mail from will be xxx@liuliancao myorigin = $mydomain # maill from will be xxx@liuliancao.com

接受哪些域名的邮件

mydestination变量描述我能够发给谁,可以指定一个或者多个 空格隔开 eg1: mydestination = $myhostname localhost.$mydomain localhost $mydomain eg2: mydestination = $myhostname localhost.$mydomain localhost $mydomain www.$mydomain ftp.$mydomain

中继哪些客户端的邮件

eg1: mynetworks_style = subnet / mynetworks_style = host # 选择host方式标记还是网段方式标记 eg2: mynetworks = 127.0.0.0/8 (safe: authorize local machine only) eg3: mynetworks = 127.0.0.0/8 YOUR_IP/32 (authorize local machine) eg4: mynetworks = 127.0.0.0/8, YOUR_IP, 192.168.0.0/16 (authorize local and other )

中继邮件到哪些目的地

relay_domains配置定义中继的域名,默认使用的是mydestination为允许目的地 relay_domains = $mydestination (default) relay_domains = (safe, never forward mail from strangers) relay_domains = $mydomain(forward mail to my domain and my subdomain)

这里建议加上常用的qq.com, 163.com等等

投递方式

relayhost = (default: direct delivery to Internet) # 默认是直接通过互联网发 relayhost = $mydomain # 通过本地的mail服务发 relayhost = [xxx.xxx.xx] # []表示关闭dns MX记录查询

邮件postmaster告知到谁

通过配置/etc/aliases postmaster: you@liuliancao.com root: you@liuliancao.com 配置完以后,有些邮件可能是不需要的,可以根据notify_classes控制 默认的配置是 notify_classes = resource, software 常见的class类型

  • bounce(反弹)

无法投递后返回给发件人一个无法投递邮件的副本 通知到bounce_notice_recipient, default: postmaster

  • 2bounce

无法返回给发件人的时候,会发给postmaster,做二次反弹, 通知到2bounce_notice_recipient, default: postmaster

  • delay

延迟邮件, 默认发给postmaster, 通知到delay_notice_recipient, default: postmaster

  • policy

通知邮件管理员由于策略问题拒绝了客户端的请求 error_notice_recipient, default: postmaster

  • protocol

通知postmaster协议错误(客户端或者服务端) error_notice_recipient, default: postmaster

  • resource

由于资源问题(队列写入文件错误),通知postmaster error_notice_recipient, default: postmaster

  • software

由于软件问题,通知postmaster

日志相关

rsyslog设置/etc/rsyslog.conf, 一般都有 mail.err /dev/console mail.debug /var/log/maillog 如果没有这个文件需要重新创建下,如果希望默认可以加一个-, 类似这样-/var/log/maillog

主机名

myhostname设置 myhostname = host.local.domain(machine name is not FQDN) myhostname = host.virtual.domain(virtual interface) myhostname = virtual.domain(virtual interface)

域名

mydomain设置 domain参数来自myhostname的域名, 默认情况下是对主机名进行截断,也可以指定mydomain, mydomain = local.domain mydomain = virtual.domain

prometheus配置发企业邮

postfix具体配置请参考我的git /var/log/maillog出现报错

1
2
  Sep 24 07:57:00 cf-prod-ops sendmail[14205]: 18M9Ln79004292: to=<xxx@liuliancao.com>, delay=1+14:35:11,\
      xdelay=00:00:00, mailer=esmtp, pri=3640090, relay=mx3.qiye.aliyun.com., dsn=4.0.0, stat=Deferred: Connection timed out with mx3.qiye.aliyun.com

sasl

为了验证哪些client是认证用户,并发给目的地,或者发给服务器自己,通常是通过在同一个网络来决定的,而不同网络可以通过sasl来实现认证,认证完以后就可以有同一个 网络下的权限了,postfix不实现sasl,而是支持配置

1
2
3
4
5
liuliancao@liuliancao:~/projects/devops-pipeline$ postconf -a # (SASL support in the SMTP server)
cyrus
dovecot
liuliancao@liuliancao:~/projects/devops-pipeline$ postconf -A # (SASL support in the SMTP+LMTP client)
cyrus

默认是cyrus这种cyrus sasl实现, 可以参考官方稳定cyrus sasl配置, 由于暂时没有需求,先不整了

报错no /etc/alias.db

报错 warning: hash:/etc/aliases is unavailable. open database /etc/aliases.db: No such file or directory 解决 sudo newaliases

如何解决发给自己的报错

Sep 24 09:02:50 liuliancao postfix/smtp[10478]: 531DD44AA3B: to=<liuliancao@liuliancao>,\ relay=smtp.xxx.com[xxxx]:25, delay=0.17, delays=0/0.04/0.12/0.01, dsn=5.0.0, status=bounced \ (host smtp.xxxx.com[xxx] said: 553 authentication is required (in reply to MAIL FROM command)) 发给自己如何不转发

利用postfix给阿里企业邮箱发邮件

在用prometheus发邮件的时候,发现无法发送邮件