本文主要讲的是postfix的一些相关配置,包括邮件数据的管理、pwcheck for ldap 的配置、postfix的配置。
在这之前我们需要先向我们的openldap目录里面添加一些东西,这些东西将来也会用到的。主要是设置一下读取目录的权限。
一、邮件数据管理
先准备在ou=admim,dc=cz8,dc=net 下面,添加一个人,这个人将作为整个邮件系统数据的管理员。他对ou=kunmail,dc=cz8,dc=net这个子树有写的权限。这个权限的设定,我们已经在slapd.conf里面指定了,那么我们就添加一个 person 到cn=kunmail,ou=admin,dc=cz8,dc=net,我们仍旧采用倒入ldif文件的方法来添加数据。
admin_cz8.ldif:
- dn: cn=kunmail, ou=admin, dc=cz8,dc=net
- userPassword: cz2004
- objectClass: top
- objectClass: person
- sn: kun
- cn: kunmail
导入之后,我们就可以用cn=kunmail,ou=admin,dc=cz8,dc=net这个dn作为账号来让邮件系统操作ldap目录了。
二、pwcheck for ldap的配置
pwcheck_ldap的配置,看了配置文件/etc/postfix/pwcheck_ldap.conf就应该知道怎么配,这里给我们的配置:
pwcheck_ldap.conf
- #
- # pwcheck_ldap.conf
- # written by hefish@cz8.net
- #
- # AUTHTYPE LDAP/UNIX
- AUTHTYPE LDAP
- LDAP_SERVER localhost
- LDAP_PORT 389
- ACCESS_DN cn=kunmail,ou=admin,dc=cz8,dc=net
- ACCESS_PWD cz2004
- SEARCH_DN ou=kunmail,dc=cz8,dc=net
- USER_ATTR userName
- PASS_ATTR userClearpw
- DEFAULT_DOMAIN cz8.net
三、postfix的配置
总算切入正题了。如上面所说,绝大部分的配置都在/etc/postfix/main.cf里面,有一些关于maildrop的配置,会需要改动/etc/postfix/master.cf。maildrop是一个过滤程序,后面会说到的。下面给出我们的配置文件main.cf,旁边//后面的部分是注释。
[以上略,都是默认配置,没有改动]
mydomain = cz8.net // 默认域
myhostname = home.cz8.net //主机名
mydestination = $mydomain $myhostname // 默认的接受邮件的域
local_recipient_maps = // 不投递系统账号邮件
mynetworks = 127.0.0.1, 192.168.0.0/24 // 允许不使用smtp发信认证的网段
relay_domains = $mydestination hash:/etc/postfix/map/relay_domains // 虚拟域列表 (relay_dimains这个文件内容见后)
transport_maps = hash:/etc/postfix/map/transport // 传输域列表,定义各个虚拟域的邮件如何传输 (这里我们使用maildrop来投递邮件)
maildrop_destination_recipient_limit = 1 // maildrop所必要的配置 (见postfix的MAILDROP_README)
mailbox_transport = maildrop // 默认的邮件投递方式 ,这里是maildrop , 投递方式在master.cf文件里面设置
local_destination_concurrency_limit = 1 // maildrop所必要的配置 (见postfix的MAILDROP_README)
home_mailbox = Maildir/ //存储邮件的方式, maildir方式 (webmail igenus支持这种方式)
local_transport = virtual // 本地邮件投递方式, virtual是作为虚拟域投递
virtual_mailbox_base=/ // 邮件存储目录的前缀 , / 表示从根目录开始
virtual_uid_maps = static:65534 // 邮件账号的uid, 这里使用nobody用户的uid, 这样将来装igenus的时候,不用修改apache的运行用户
virtual_gid_maps = static:65534 // 同上
virtual_mailbox_maps = ldap:kunmailuser // 指定postfix如何去检索邮件用户。 这里是采用ldap,具体的ldap配置,读取kunmailuser开头的配置。 详细的配置说明见 postfix 的 LDAP_README
kunmailuser_timeout=10 // timeout 的时间
kunmailuser_server_host=localhost // ldap server host
kunmailuser_server_port=389 // ldap server port
kunmailuser_search_base=ou=kunmail,dc=loveu99,dc=net // 邮件账号所在的子目录
kunmailuser_query_filter=(&(userName=%s)(userActive=1)) // 检索邮件账号的条件,相当于sql里面的where子句,就是写法不大一样
kunmailuser_result_attribute=userMaildir // 邮件用户的maildir目录属性名。 (在kunmail.schema里面定义的)
kunmailuser_bind=yes // 是否采用认证用户来读取ldap,(也可以采用匿名方式,这样速度快,但是安全性差,如果ldap服务器在内网,就不怕了)
kunmailuser_bind_dn=cn=kunmail,ou=admin,dc=loveu99,dc=net // 登陆ldap的用户dn账号和密码
kunmailuser_bind_pw=123654
kunmailuser_version=3 // 采用的ldap协议的版本,应该是3 (老的openldap 1.x是2)
message_size_limit = 8388608 // 每封信的最大大小
virtual_mailbox_limit_size = 8388608 // 邮箱的默认大小
virtual_mailbox_limit_maps = ldap:kunmailquota // 指定postfix如何获得用户的quota信息。
#p#
- kunmailquota_timeout=10
- kunmailquota_server_host=localhost
- kunmailquota_server_port=389
- kunmailquota_search_base=ou=kunmail,dc=loveu99,dc=net
- kunmailquota_query_filter=(userName=%s)
- kunmailquota_result_attribute=userQuota
- kunmailquota_bind=yes
- kunmailquota_bind_dn=cn=kunmail,ou=admin,dc=loveu99,dc=net
- kunmailquota_bind_pw=123654
- kunmailquota_version=3
- virtual_mailbox_limit_override=yes //指定每个用户的quota信息,是否要覆盖全局的默认quota信息。
- smtpd_sasl_auth_enable=yes
- smtpd_sasl_local_domain = $mydomain
- smtpd_recipient_restrictions = permit_mynetworks permit_sasl_authenticated perm
- it_auth_destination reject
- smtpd_sasl_security_options = noanonymous
- smtpd_client_restrictions = permit_sasl_authenticated // 以上是关于smtp认证的,具体参考SASL_README
- smtpd_banner = Public Mail System v1.0 (based on Postfix) //这个是定义smtpd banner的。
应该不是很难读懂吧。
下面是跟main.cf有关的relay_domains文件和transport文件
- $ cat relay_domains
- cz8.net cz8.net
- $ cat transport
- cz8.net maildrop:
很简单吧,将来要添加虚拟域就是操作这两个文件。
完了之后,relay_domains和transport这两个文件要做成db文件才能被postfix所读,这也是问了加快读取得速度。可以用postmap来做这件事
- $ postmap relay_domains
- $ postmap transport
另外还有/etc/aliases这个文件,也需要做成db文件,postfix才能正常工作:
- $ postmap /etc/aliases
下面是修改master.cf文件,主要是修改maildrop这一行。我们的maildrop将被安装在/usr/local/maildrop下,所以要修改一下相关的设置。在master.cf文件里,把:
- maildrop unix - n n - - pipe
- flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
改成:
- maildrop unix - n n - - pipe
- flags=R user=nobody argv=/usr/local/maildrop/bin/maildrop -d ${recipient}
其中nobody是我们邮件用户使用的uid。
基于postfix的配置,大致就这些。
就到这里吧,同学们有兴趣可以继续仔细阅读一下相关的一些文档,以理解整个邮件系统投递邮件的完整过程。
【编辑推荐】