Postfix虚拟主机与LDAP后端和与Dovecot作为IMAP / POP3服务器在Ubuntu Intrepid Ibex服务器8.10

Postfix虚拟主机与LDAP后端和Dovecot作为IMAP / POP3服务器在Ubuntu Intrepid Ibex服务器8.10

这样可以让您配置带虚拟主机的Postfix邮件服务器。 虚拟主机意味着您可以根据需要添加任意数量的邮件域,并根据需要为这些域添加尽可能多的邮箱。 在这里,我们为MTA(Postfix)和POP3 / IMAP服务器(Dovecot)和基于Web的管理界面使用LDAP后端。

这是如何升级版的Ubuntu Hardy Heron版本。

要在这个软件中使用如何:

Postfix MTA, Dovecot IMAP / POP3, OpenLDAPGnarwl作为自动回复(休假)和Phamm作为管理界面。

假设:

这样如何假设以下配置,如果您的安装与此不同,则将以下条目替换为您的实际配置。

邮件传递(邮箱)路径:

/home/vmail/domains

用户vmail

UID:1000, GID:1000

用户Postfix

UID: 108, GID:108

OpenLDAP base dn:

dc=example,dc=tld

OpenLDAP管理员帐号:

cn=admin,dc=example,dc=tld

Phamm搜索dn:

o=hosting,dc=example,dc=tld

本指南中您正在使用root用户。

如果你想要例如o = maildomains或o = any,请确保替换o = hosting与你想要的,特别是在acl.ldif中。 这个acl文件是严格的,如果不完全一样,phamm将无法正常工作。

第1步:安装并配置Ubuntu服务器

我建议您遵循以下指南(我不需要重写或重新设计别人做得比我更好):

完美的服务器 - Ubuntu Intrepid Ibex(Ubuntu 8.10)

不要安装以下项目(如何):

apt-get install postfix libsasl2-2 sasl2-bin libsasl2-modules procmail
apt-get install courier-authdaemon courier-base courier-imap courier-imap-ssl courier-pop courier-pop-ssl courier-ssl gamin libgamin0 libglib2.0-0

我们将在本指南中进一步安装和配置Postfix和Dovecot。

注意:所有的URL和包名在编写本文时都是有效的。 最佳做法是检查是否有新版本可用。

所以让我们开始吧

第2步:安装和配置OpenLDAP

运行以下命令在服务器上安装OpenLDAP,并在出现提示时输入admin用户的密码:

apt-get install slapd ldap-utils

现在,我们将下载其他使用和需要的模式以及phamm包,因为它包含一个我们需要的模式:

mkdir /usr/src/phamm-inst
cd /usr/src/phamm-inst
wget http://open.rhx.it/phamm/phamm-0.5.15.tar.gz
wget http://open.rhx.it/phamm/schema/ISPEnv2.schema
wget http://open.rhx.it/phamm/schema/amavis.schema
wget http://open.rhx.it/phamm/schema/samba.schema
wget http://open.rhx.it/phamm/schema/pureftpd.schema

现在我们要打开phamm包来获取所需的schema。

tar xvzf phamm-0.5.15.tar.gz

Intrepid中的OpenLDAP不再使用slapd.conf文件配置,而是使用存储在/etc/ldap/slapd.d中的ldif文件,因此我们需要先将模式文件转换为ldif文件。

为转换的模式文件创建一个临时目录:

cd ..
mkdir ldif_out

复制phamm.schema为方便起见:

 cp phamm-0.5.15/schema/phamm.schema .

创建一个schema.convert文件:

vi schema.convert

将以下内容粘贴到文件中:

include         /etc/ldap/schema/core.schema
include         /etc/ldap/schema/cosine.schema
include         /etc/ldap/schema/nis.schema
include         /etc/ldap/schema/inetorgperson.schema
include         phamm.schema
include         ISPEnv2.schema
include         amavis.schema
include         pureftpd.schema

需要额外的模式才能使转换成功,因为从这些模式的某些对象被其他shema使用。

现在我们要将架构文件转换为ldif文件:

slaptest -f schema.convert -F ldif_out

这将将模式转换为ldif,但是在将它们导入到OpenLDAP服务器之前,我们必须对它们进行编辑。

vi ldif_out/cn\=config/cn\=schema/cn\=\{4\}phamm.ldif
并更改所需的条目以匹配以下内容:
dn: cn=phamm,cn=schema,cn=config
...
cn: phamm
并从ldif的末尾删除以下内容(忽略以后的内容:因为它会根据转换的日期,时间,...而有所不同):
structuralObjectClass: olcSchemaConfig
entryUUID: 08bf1a06-7a89-102d-9fa6-4bee1e86d7f6
creatorsName: cn=config
createTimestamp: 20090119152440Z
entryCSN: 20090119152440.275296Z#000000#000#000000
modifiersName: cn=config
modifyTimestamp: 20090119152440Z
并为其他ldif文件也这样做。
cn={5}ISPEnv2.ldif
cn={6}amavis.ldif
cn={7}pureftpd.ldif

现在我们要将模式文件加载到OpenLDAP中:

ldapadd -x -D cn=admin,cn=config -W -f ldif_out/cn\=config/cn\=schema/cn\=\{4\}phamm.ldif
ldapadd -x -D cn=admin,cn=config -W -f ldif_out/cn\=config/cn\=schema/cn\=\{5\}ISPEnv2.ldif
ldapadd -x -D cn=admin,cn=config -W -f ldif_out/cn\=config/cn\=schema/cn\=\{6\}amavis.ldif
ldapadd -x -D cn=admin,cn=config -W -f ldif_out/cn\=config/cn\=schema/cn\=\{7\}pureftpd.ldif

您将被要求您在安装OpenLDAP时定义的密码。

现在我们需要为OpenLDAP设置正确的acl。 你好运,我做了转换为ldif样式,以便您可以使用下面的命令设置所需的acl。

我们将创建两个文件: acl-del.ldifacl-add.ldif

vi acl-del.ldif

粘贴以下内容:

dn: olcDatabase={1}hdb,cn=config
delete: olcAccess 
olcAccess: to attrs=userPassword,shadowLastChange by dn="cn=admin,dc=example,dc=tld" write by anonymous auth by self write by * none 
olcAccess: to dn.base="" by * read 
olcAccess: to * by dn="cn=admin,dc=example,dc=tld" write by * read
vi acl-add.ldif
dn: olcDatabase={1}hdb,cn=config
add: olcAccess
olcAccess: to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=userPassword by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous auth by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write 
olcAccess: to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=amavisBypassVirusChecks,quota,smtpAuth,accountActive by dn="cn=admin,dc=example,dc=tld" write by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/editAccounts & [TRUE]" write by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" read by set.expand="user/vd & [$1]" write 
olcAccess: to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=cn,sn,forwardActive,vacationActive,vacationInfo,vacationStart,vacationEnd,vacationForward,amavisSpamTagLevel,amavisSpamTag2Level,amavisSpamKillLevel by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write 
olcAccess: to dn.regex="^.*,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=editAccounts by dn="cn=admin,dc=example,dc=tld" write by self read by set.expand="user/editAccounts & [TRUE]" write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by * none 
olcAccess: to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=objectClass,entry by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/editAccounts & [TRUE]" write by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" read 
olcAccess: to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=amavisBypassSpamChecks,accountActive,delete by dn="cn=admin,dc=example,dc=tld" write by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$1]" write 
olcAccess: to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=otherPath    by dn="cn=admin,dc=example,dc=tld" write by anonymous read by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$1,o=hosting,dc=example,dc=tld" read by set.expand="user/vd & [$1]" write 
olcAccess: to dn.regex=".+,vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=createMaildir,vdHome,mailbox,otherTransport by dn="cn=admin,dc=example,dc=tld" write by self read by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read  by set.expand="user/vd & [$1]" read
olcAccess: to dn.regex="^(.+,)?vd=([^,]+),o=hosting,dc=example,dc=tld$" attrs=vd by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by dn.exact,expand="cn=postmaster,vd=$2,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$2]" write 
olcAccess: to dn.regex="^(.+,)?vd=([^,]+),o=hosting,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by set.expand="user/editAccounts & [FALSE]" read by dn.exact,expand="cn=postmaster,vd=$2,o=hosting,dc=example,dc=tld" write by set.expand="user/vd & [$2]" write 
olcAccess: to dn.regex=".+,o=hosting,dc=example,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by self write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by anonymous auth 
olcAccess: to dn.regex=".+,dc=tld$" by dn="cn=admin,dc=example,dc=tld" write by dn.exact="cn=phamm,o=hosting,dc=example,dc=tld" read by anonymous auth 
olcAccess: to dn.regex=".+,ou=admin,dc=example,dc=tld$" attrs=userPassword by dn="cn=admin,dc=example,dc=tld" write by self write by anonymous auth 
olcAccess: to dn.regex=".+,ou=admin,dc=example,dc=tld$" attrs=vd by dn="cn=admin,dc=example,dc=tld" write by self read
olcAccess: to dn.regex="ou=admin,dc=x4w,dc=it$" by dn="cn=admin,dc=example,dc=tld" write by self read

现在我们要设置acl的:

ldapmodify -x -D cn=admin,cn=config -W -f acl-del.ldif
ldapmodify -x -D cn=admin,cn=config -W -f acl.ldif

您将被要求您在安装OpenLDAP时定义的密码。

现在我们将把主机组织添加到OpenLDAP中:

vi phamm.ldif

并将以下内容粘贴到其中:

dn:o=hosting,dc=example,dc=tld
objectClass: top
objectClass: organization
o: hosting
description: mail.example.tld hosting root

将描述更改为您想要的内容。

现在我们要导入ldif:

ldapadd -x -D cn=admin,dc=example,dc=tld -W -f phamm.ldif

OpenLDAP配置到此结束。

赞(52) 打赏
未经允许不得转载:优客志 » 系统运维
分享到:

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏