使用iRedMail和OpenVPN进行虚拟电子邮件托管和VPN服务,通过针对OpenLDAP(CentOS 5.4)的中央身份验证
iRedMail是一个外壳脚本,可让您在不到2分钟内快速部署全功能邮件解决方案。 iRedMail支持OpenLDAP和MySQL作为后端用于存储虚拟域和用户。
本教程介绍如何将OpenVPN集成到CentOS 5.x上的iremail的ldap后端,让openvpn auth OpenLDAP?密码将存储在ldap中,您可以通过webmail更改密码。
本教程基于CentOS 5.4,所以建议设置一个最低的CentOS 5.4系统,安装iremail 0.6并选择openldap作为后端,如这些教程所示:
- iRedMail:使用LDAP,Postfix,RoundCube / SquirrelMail,Dovecot,ClamAV,SpamAssassin,Amavisd(Debian 5.0.1)的邮件服务器
- iRedMail:使用LDAP,Postfix,RoundCube,Dovecot,ClamAV,SpamAssassin,DKIM,SPF在CentOS 5.x上构建全功能邮件服务器
1安装OpenVPN
使用EPEL yum存储库安装OpenVPN。
rpm -Uhv http://download.fedora.redhat.com/pub/epel/5/i386/epel-release-5-3.noarch.rpm # <-- For i386
rpm -Uhv http://download.fedora.redhat.com/pub/epel/5/x86_64/epel-release-5-3.noarch.rpm # <-- For x86_64
安装OpenVPN和ldap支持:
yum install openvpn openvpn-auth-ldap
chkconfig openvpn on
安装dnsmasq - 通过VPN转发DNS流量,您需要安装dnsmasq软件包:
yum install dnsmasq
/etc/init.d/dnsmasq start
chkconfig dnsmasq on
2 easy-rsa
OpenVPN软件包提供了一组名为“easy-rsa”的加密相关工具。 这些脚本默认位于/ usr / share / doc / openvpn / examples / easy-rsa /
目录中。 但是,为了正常运行,这些脚本应位于/ etc / openvpn
目录中。 我们还需要将Openvpn配置示例文件复制到/ etc / openvpn
。
cp -R /usr/share/openvpn/easy-rsa/ /etc/openvpn
配置公钥基础架构变量
在为OpenVPN生成公钥基础设施之前,我们必须配置easy-rsa脚本将用于生成脚本的几个变量。 这些变量设置在/etc/openvpn/easy-rsa/2.0/vars
文件末尾附近。 以下是相关值的示例:
编辑/etc/openvpn/easy-rsa/2.0/vars
:
export KEY_COUNTRY="CN" export KEY_PROVINCE="BJ" export KEY_CITY="BeiJing" export KEY_ORG="iredmail" export KEY_EMAIL="www@example.com" |
初始化公钥基础设施(PKI)
按顺序发出以下命令来内部化证书颁发机构和公钥基础结构:
cd /etc/openvpn/easy-rsa/2.0/
chmod +rwx *
source ./vars
./clean-all
./pkitool --initca
生成证书
生成证书颁发机构可以为服务器生成私钥。 此脚本还将提示您提供更多信息。 默认情况下,此密钥的公用名称为“服务器”。 您可以在使用备用值有意义的情况下更改这些值。 要完成此操作,请发出以下命令:
./pkitool --server server
生成Diffie Hellman参数链接
“Diffie Hellman参数”管理OpenVPN服务器使用的密钥交换和认证方法。 发出以下命令生成这些参数:
./build-dh
重新安置安全密钥
需要将服务器的密钥和证书重新定位到/ etc / openvpn
目录,以便OpenVPN服务器进程可以访问它们。 这些文件是:
- ca.crt
- ca.key
- dh1024.pem
- server.crt
- server.key
cp keys/{ca.crt,ca.key,server.crt,server.key,dh1024.pem} /etc/openvpn/
这些文件不需要离开你的服务器。 维护对这些文件的完整性和控制对您的服务器的完整性至关重要。 如果您需要移动或备份这些密钥,请确保它们已被加密和保护。
3配置OpenVPN支持LDAP认证
找到cn = vmail密码
在iremail安装期间随机创建vmail密码。您可以在/etc/postfix/ldap_virtual_mailbox_domains.cf
中找到密码:
cat /etc/postfix/ldap_virtual_mailbox_domains.cf
bind_dn = cn=vmail,dc=example,dc=com bind_pw = InYTi8qGjamTb6Me2ESwbb6rxQUs5y #cn=vmail password |
在/etc/openvpn/auth/ldap.conf中配置LDAP身份验证
# LDAP server URL URL ldap://localhost # Bind DN (If your LDAP server doesn't support anonymous binds) BindDN cn=vmail,dc=example,dc=com # Bind Password cn=vmail password Password InYTi8qGjamTb6Me2ESwbb6rxQUs5y # Network timeout (in seconds) Timeout 15 # Base DN BaseDN "o=domains,dc=example,dc=com" # User Search Filter SearchFilter "(&(objectClass=mailUser)(accountStatus=active)(enabledService=vpn))" # Require Group Membership RequireGroup false
4配置OpenVPN
我们现在需要配置我们的服务器文件。 /usr/share/doc/openvpn-2.1.1/examples/sample-config-files中
有一个示例文件。 发出以下命令序列以检索示例配置文件并将其移动到所需的目录:
cp /usr/share/doc/openvpn-2.1.1/sample-config-files/server.conf /etc/openvpn/
现在编辑/etc/openvpn/server.conf
:
push "redirect-gateway def1" push "dhcp-option DNS 10.8.0.1" plugin /usr/lib/openvpn/plugin/lib/openvpn-auth-ldap.so /etc/openvpn/auth/ldap.conf client-cert-not-required |
5为邮件用户启用VPN服务
使用phpLDAPadmin或其他工具为现有邮件用户添加示例LDAP属性和值。
登录phpLDAPadmin:
查找现有邮件用户www@example.com
:
为用户启用VPN服务www@example.com
: