postfix 的常见功能和配置有哪些?

postfix 的常见功能和配置有哪些?,第1张

postfix是一种MTA,用来收发邮件

service:postfix

port:25

proto:smtp

datafile:/var/spool/mail/user

queue:/var/spool/postfix

log:/var/log/maillog

paraments:  http://www.postfix.org/postconf.5.html

configuration:/etc/postfix/main.cf(主要配置如下参数) 

myhostname:默认为主机名(可自己写)

mydomain:默认为主机的域(...)

myorigin:当发信时,如果不写@domain,默认用该变量值补齐,默认为mydomain

mydestination:该变量决定什么样后缀的邮件到达该MTA的时候会被该MTA接受

inet_interfaces:监听哪个网卡

relayhost:找一个帮忙转发的MTA,可以是[IP],也可以是hostname,如果hostname写在[]中,可以避免查dns

mynetworks:信任的网络,如果信任,可以帮忙转发.如果不设置,默认使用该机器网卡的网段(所有网卡)

local_transport=error:local delivery disabled    //本地不接受邮huh件

MTA必须配合DNS使用,当发邮件时,

mail   user@domain

机器是无法识别domain的,必须由DNS解析出IP,然后找到IP对应的MTA,通过SMTP协议将邮件发到MTA的25号端口,因此DNS必须有一条MX记录,帮助解析MTA的IP

domain   MX   5 name                //5为优先级,当有多条MX记录,默认走优先级高的,即数字小的

name A ip

配置之后通过dig查看配置是否成功

备注:修改hostname的时候,修改网卡配置的时候,会改变/etc/resolv.conf文件的内容,影响DNS的正常使用,在/etc/NetworkManager/NetworkManager.conf中添加dns=none就会不受影响。

【relayhost】

relayhost参数指定了下一个MTA,自己可以不做DNS解析,将邮件发给RELAYHOST,RELAYHOST帮忙解析

relayhost=[IP]/hostname

hostname必须可以解析,默认的解析方法时DNS,如果想要用/etc/hosts解析,需要修改一个参数

smtp_host_lookup,该参数的值可以时dns(只有dns)native(只用/etc/nsswitch.conf)dns,native(优先dns)

【transport】

transport:作用和relayhost一样,但是不是无条件帮忙转发,有域的限定

/etc/postfix/main.cf     transport_maps = hash:/etc/postfix/transport(文件可以随意,这个时默认的)

domain  smtp:[IP]:25    

生成数据库:postmap   /etc/postfixe/transport   生成数据库 transport.db

备注:transport的优先级 >mydestination >relayhost

备注:transport的数据库表有好几种格式,postconf -m 可以查看支持的数据库表格式,常见的有hash,regexp

如果为regexp格式,transport文件中的转发格式则不同:

/filter/               :relayhost                             //filter中的“.”符号要加转义符号

【queue】

当邮件发不出去的时候,会将邮件留在queue里,/var/spool/postfix下

mailq查看queue中的邮件

postqueue -f 尝试重新发送queue中的邮件

postqueue -i q_id  把指定的邮件再发送一次

postsuper -d All   删除queue中的所有邮件

postsuper -d ALL queuename 删除特定queue内的所有邮件

postconf  查看主配置文件的参数

postconf -d 查看主配置文件参数的默认值

关于邮件在queue中的发送的几个参数:

queue_run_delay:一个检测queue的程序自服务启动后运行的时间间隔

maximal_backoff_time:在检测程序跑的时候,queue中的邮件超过该时间的会被重新发送

minimal_backoff_time:当超过最小值还没有发送成功,发送的时间会变成*2,一直到最大的间隔

maximal_queue_lifetime:在queue中存在的最长时间,超过被删除(系统认为该邮件发布出去)

【telnet】

一种测试MTA是否能正常通信的方式

telnet  ****** 25  (某台MTA的25号端口)

ehlo  ***                    //表明身份

mail from:  user@domain                   //邮件来源

rcpt to: user@domain                //邮件发往

data                                             //之后输入邮件的内容

subject:                           //主题,下面就可以输入邮件的正文

【alias】

/etc/aliases里可以定义别名,到达MTA本地的邮件会走这个文件,

例如:定义了a1:root,创建新的数据库,newaliases 则发给a1的邮件会存在/var/mail/root中

【virtual aliases domain】

虽然感觉并没有什么卵用,但是还是能起到一点点一个MTA上面可以接受多个域的邮件,存放地方还不会混乱的一个机制

/etc/postfix/main.cf    :

virtual_alias_domains=domain1,domain2

virtual_alias_map = hash:/etc/postfix/virtual(默认为该文件,可以修改)

/etc/postfix/virtual

user@domain1   user1(local user)     //发给某个域的某个用户的邮件存在/var/spool/mail/user1中

【virtual mailbox domain】

/etc/postfix/main.cf

virtual_mailbox_domains = domain

virtual_mailbox_base = /var/mail/vhosts         //发过来的邮件会基于这个目录

virtual_mailbox_maps = hash:/etc/postfix/vmailbox

virtual_minimum_uid = 100             //系统默认值,如果下面两个参数小于该值,就会报错

virtual_uid_maps = static:5000

virtual_gid_maps = static:5000

/etc/postfix/vmailbox

user@domain     file                         //发给该用户的邮件会存在该文件里

user@domain     dir                           //发给该用户的邮件会存在该目录下的一个文件里,这样,每一封邮件都有一个文件

postmap   /etc/postfix.vmailbox

chown 5000:5000   存放邮件的上层目录

【sasl】

加在MTA外面的一层认证,当用我这个MTA帮忙转发的时候,就像RELAYHOST和transport中被信任以外,还可以时通过验证的,有该MTA的user去做验证

1.install cyrus-sasl,cyrus-sasl-plain

2. /etc/postfix/main.cf:

smtpd_sasl_path = smtpd              //默认值

3./etc/sasl2/smtpd.conf

pwcheck_method: saslauthd

mech_list: PLAIN LOGIN                   //默认就有

4. /etc/sysconfig/saslauthd:

MECH=shadow/pam

5. saslauthd restart

6.# testsaslauthd -u xxx -p xxx    //用用户和密码测试sasl是否成功

7./etc/postfix/main.cf:

smtpd_sasl_auth_enable = yes             //sasl在postfix中生效

broken_sasl_auth_clients = yes //兼容微软的outlook

smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated,reject_unauth_destination

8.# echo -ne '\000username\000password' | openssl base64  //用户和密码生成base64的密文,当另一台MTA将邮件传过来转发时,要进行认证

备注:sasl 采用 /etc/shadow 文件验证用户的时候,selinux 会有限制,为了解除selinux 的限制,需要打开 saslauthd_read_shadow  布尔值

test:

telnet:

auth plain 密文

user   username

pass  password

认证成功就可以帮助转发了

在安装邮件服务器之前先了解几个名词,以后会用到:

MUA:用户代理端,即用户使用的写信、收信客户端软件

MTA:邮件传送端,即常说的邮件服务器,用于转发、收取用户邮件。

MDA:邮件代理端,相当于MUA和MTA的中间人,可用于过滤垃圾邮件。

POP:邮局协议,用于MUA连接服务器收取用户邮件,通信端口110。

IMOP:互联网应用协议,功能较POP多,通信端口143。

SMTP:简单邮件传送协议,MUA连接MTA或MTA连接MTA发送邮件使用此协议,通信端口25。

本次配置MTA以Postfix为例,较sendmail简单、安全,且兼容于sendmail。

Postfi安装:

yum install postfix

yum remove sendmail

/etc/init.d/postfix start

Postfix主配置设定:

cat /etc/postfix/main.cf

myhostname = mail.haiyun.me #Mail服务器域名,EHLO名称。

mydomain = www.haiyun.me #

myorigin = $mydomain #发信地址,此设置显示为@www.haiyun.me。

inet_interfaces = all #如对外提供MTA服务设置为监听所有网卡,默认只监听本地。

inet_protocols = all #支持协议,可选IPV4/IPV6。

mydestination = $mydomain $myhostname #本地邮件域名,直接接收

mynetworks_style = subnet #允许转发的来源网段,可选subnet子网,class网段,host本机

mynetworks = 192.168.1.0/24,127.0.0.0/8 #允许转发的来源IP,设置后忽略mynetworks_style参数

relay_domains = $mydestination #允许转发的目标域

smtpd_banner = $myhostname ESMTP "Mail Server" #自定服务器信息

现Postfix允许接收或发送邮件的条件:

接收邮件:

目的地为$inet_interfaces的邮件;

目的地为$mydestination或$vitual_alias_maps的邮件。

转发邮件:

来源客户端符合$mynetworks的邮件;

来源或目的为$relay_domains的邮件。

配置邮件别名:

cat /etc/aliases

test:root,test@www.haiyun.me

别名:收件地址1,收件地址2

更新别名数据库:

newaliases

配置邮件转发:

cat ~/.forward

test@www.haiyun.me,test2@www.haiyun.me

设置SMTP密码验证,为防止MTA被滥用在postfix有配置信任网段,如在外网可使用smtp密码验证方式。

以系统用户密码方式认证,先启动saslauthd服务协助postfix进行系统密码验证:

/etc/init.d/saslauthd start

chkconfig saslauthd on

yum install cyrus-sasl-plain cyrus-sasl-md5 cyrus-sasl

确定SMTPD配置文件有以下内容:

cat /usr/lib/sasl2/smtpd.conf

pwcheck_method: saslauthd #saslauthd协助smtp进行密码验证

配置Postfix使用SASL验证,编辑main.cf配置文件添加:

smtpd_sasl_auth_enable = yes #开启SMTP验证

smtpd_sasl_security_options = noanonymous #不允许匿名用户

smtpd_recipient_restrictions = #接收者限制规则,按顺序执行

permit_mynetworks, #mynetworks用户通过,匹配结束

permit_sasl_authenticated, #sasl验证用户通过,匹配结束

reject_unknown_sender_domain, #拒绝无效的发送邮件域名

reject_unauth_destination #拒绝收件人非mydestination、relay_domains或virtual_alias_maps定义域邮件

测试SMTP验证是否生效:

telnet localhost 25

Trying ::1...

Connected to localhost.

Escape character is '^]'.

220 mail.domain.com ESMTP Postfix

ehlo localhost

250-mail.domain.com

250-PIPELINING

250-SIZE 10240000

250-VRFY

250-ETRN

250-AUTH LOGIN PLAIN #显示此信息代表验证正常

250-ENHANCEDSTATUSCODES

250-8BITMIME

250 DSN

配置IMAP及POP:

yum -y install dovecot

编辑dovecot配置文件:

vim /etc/dovecot/dovecot.conf

protocols = imap pop3 #监听协议

login_trusted_networks = 127.0.0.1 #允许登录接收邮件的IP段

设置邮件目录:

cat /etc/dovecot/conf.d/10-mail.conf

mail_location = mbox:~/mail:INBOX=/var/mail/%u

新建Mail账号:

useradd -g mail -s /sbin/nologin user

启动dovecot服务:

/etc/init.d/dovecot start


欢迎分享,转载请注明来源:夏雨云

原文地址:https://www.xiayuyun.com/zonghe/28240.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-02-18
下一篇2023-02-18

发表评论

登录后才能评论

评论列表(0条)

    保存