基于OPENldap搭建postfix 虚拟用户
postfix 虚拟用户
postfix + dovecot + openldap 制作虚拟邮件用户
这里使用的虚拟邮件用户的方法是我自己研究的,可能会有不对或则不好的地方,望指出。
由于之前已经写过mariadb作为数据库的虚拟用户,所以这里会有很多地方会简化配置和讲解,如果没有看懂可以看看这篇文章:
有关于openldap方面的配置这里不多做解释,更多的查看这篇文章ldap 服务搭建和后期管理,这里主要还是写有关于虚拟邮件用户的相关配置。
同时这里我使用debian9作为平台。
1. openldap添加用户
# file: mail.ldif # mail组 dn: ou=mail,dc=black,dc=com objectclass: organizationalunit ou: mail #user1 dn: uid=user1,ou=mail,dc=black,dc=com objectclass: inetorgperson uid: user1 sn: user1 cn: user1 mail: /home/user1/maildir/ userpassword: {ssha}so5pfb6gpmgupqb1o59kxa7yqdgft6iu # 密码生成: doveadm pw -s ssha -p user1 #user2 dn: uid=user2,ou=mail,dc=black,dc=com objectclass: inetorgperson uid: user2 sn: user2 cn: user2 mail: /home/user2/maildir/ userpassword: {ssha}e6pyvtdwcxtpfhjlw3nnelbob63qqpuw
如果有批量的操作,这里还可是使用脚本:
#!/bin/bash cat << eof | ldapadd -d "cn=root,dc=black,dc=com" -w 123456 dn: ou=mail,dc=black,dc=com objectclass: organizationalunit ou: mail eof for i in {1..2};do user=user$i password=`doveadm pw -s ssha -p $user` cat << eof | ldapadd -d "cn=root,dc=black,dc=com" -w 123456 dn: uid=$user,ou=mail,dc=black,dc=com objectclass: inetorgperson uid: $user sn: $user cn: $user mail: /home/$user/maildir/ userpassword: $password eof done
2. postfix 服务配置
# 添加用户vmail useradd vmail # 后面通过查询得知uid和gid为1004
这里主要写 有关虚拟用户目录,和用户配置的部分:
# file: /etc/postfix/main.cf …… virtual_gid_maps = static:1004 # 直接固定uid 和 gid virtual_uid_maps = static:1004 virtual_mailbox_domains = black.com # 同样的也固定域名 # 这里需要注意在mydestination 中不能包含该域名 virtual_mailbox_maps = ldap:/etc/postfix/ldap.cf # 指定用户邮箱的配置文件 virtual_mailbox_base = / # 这里的base路径设置为 / , # 这里主要是因为ldap不能像mariadb一样可是使用concat函数,dovecot中不能设置base路径,所以在ldap中mail的路径被设置成了绝对路径,然后这里的base路径设置为/。如果有其他方法请留言或邮件告知。 broken_sasl_auth_clients = yes # 拒绝非正常客户端 smtpd_sasl_auth_enable = yes # 开启sasl认证 smtpd_sasl_type = dovecot # 使用dovecot认证 smtpd_sasl_path = private/auth # 设置认证套接字 smtpd_recipient_restrictions = permit_sasl_authenticated,reject # 这里设在为了强制认证,如果放在生成环境中是不可取的。
ldap.cf 文件:
# file: /etc/postfix/ldap.cf server_host = localhost # 服务器地址 server_port = 389 # 服务器端口 timeout = 5 # 超时时间 bind_dn = cn=root,dc=black,dc=com # 登入用户 bind_pw = 123456 # 登入密码 search_base = ou=mail,dc=black,dc=com # 搜寻base地址 query_filter = (&(objectclass=inetorgperson)(uid=%u)) # 过来规则 result_attribute = mail # 指定使用那个返回属性
3. dovecot 服务配置
主要配置一下几个文件:
# file: /etc/dovecot/dovecot.conf protocols= pop3 # 开启pop3服务 listen = * # 监听服务类型 !include conf.d/*.conf # 其他配置
# file: /etc/dovecot/conf.d/10-auth.conf disable_plaintext_auth = no # 关闭不允许为加密密文传输 auth_mechanisms = plain login # 这里需要再开启login的认证,否则postix无法使用 !include auth-ldap.conf.ext # 这里注释auth-system.conf.ext,然后开启auth-ldap.conf.ext
# file /etc/dovecot/conf.d/10-mail.conf mail_location = maildir:/home/%u/maildir/ namespace inbox { inbox = yes } mail_uid = 1004 # 这里跟postfix一样固定uid和gid mail_gid = 1004
# file: /etc/dovecot/conf.d/10-master.conf …… service auth { unix_listener auth-userdb { } unix_listener /var/spool/postfix/private/auth { # 为postfix开启auth认证套接字 mode = 0660 user = postfix group = postfix } } ……
# file: /etc/dovecot/dovecot-ldap.conf.ext hosts = localhost:389 # 主机 dn = cn=root,dc=black,dc=com #登入名称 dnpass = 123456 # 密码 base = ou=mail,dc=black,dc=com # base路径 user_attrs = mail=home # 指定返回的属性 user_filter = (&(objectclass=inetorgperson)(uid=%u)) # 用户过滤参数 pass_attrs = uid=user,userpassword=password # 密码过滤参数 pass_filter = (&(objectclass=inetorgperson)(uid=%u)) default_pass_scheme = ssha # 指定密码加密方法
4. 权限配置和测试
首先给vmail用户添加一下权限
setfacl -m u:vmail:rwx /home systemctl restart dovecot systemctl restart postfix
然后就可是进行测试了,这里不多讲,能写出来那么肯定是能通过的:
echo -e "ehlo client\nauth login\nvxnlcje=\nvxnlcje=\nmail from: user1@black.com\nrcpt to: user2@black.com\ndata\nhello,user2\n.\nquit\n" | nc 127.0.0.1 25
220 mail.black.com esmtp postfix (debian/gnu)
250-mail.black.com
250-pipelining
250-size 10240000
250-vrfy
250-etrn
250-auth plain login
250-auth=plain login
250-enhancedstatuscodes
250-8bitmime
250-dsn
250 smtputf8
334 vxnlcm5hbwu6
334 ugfzc3dvcmq6
235 2.7.0 authentication successful
250 2.1.0 ok
250 2.1.5 ok
354 end data with.
250 2.0.0 ok: queued as 0a38110016b
221 2.0.0 bye
echo -e "user user2\npass user2\nstat\nquit\n" | nc 127.0.0.1 110
+ok dovecot ready.
+ok
+ok logged in.
+ok 2 804
+ok logging out.
上一篇: 您的花在这儿
推荐阅读
-
基于OPENldap搭建postfix 虚拟用户
-
使用ubuntu搭建公网个人邮件服务器(基于postfix,dovecot,mysql)
-
建立基于虚拟用户的VSftpd服务
-
httpd虚拟主机、站点访问控制、基于用户的访问控制、持久链接等应用配置实例
-
详解CentOS7 FTP服务搭建(虚拟用户访问FTP服务)
-
基于域名、端口和IP搭建nginx虚拟主机
-
基于MySql验证的vsftpd虚拟用户
-
详解基于centos7搭建Nginx网站服务器(包含虚拟web主机的配置)
-
①搭建Nginx服务器/②SSL加密网站/③基于域名虚拟主机
-
基于虚拟账号的邮件系统postfix+extmail+mysql