首页 | 邮件资讯 | 技术教程 | 解决方案 | 产品评测 | 邮件人才 | 邮件博客 | 邮件系统论坛 | 软件下载 | 邮件周刊 | 热点专题 | 工具
网络技术 | 操作系统 | 邮件系统 | 客户端 | 电子邮箱 | 反垃圾邮件 | 邮件安全 | 邮件营销 | 移动电邮 | 邮件软件下载 | 电子书下载

操作系统

Windows 9X | Linux&Uinx | Windows Server | 其它操作系统 | Vista | FreeBSD | Windows 7 |
首页 > 操作系统 > FreeBSD > FreeBSD下利用ACI/SSL安全使用OpenLDAP > 正文

FreeBSD下利用ACI/SSL安全使用OpenLDAP

出处:中文FreeBSD用户组 http://www.cnfug.org 作者:张雪平(heromyth) 时间:2005-6-20 10:58:00

简介:

本篇是FreeBSD下安装OpenLDAP (http://www.donews.net/heromyth/archive/2004/10/24/146690.aspx)的续篇,主要讲如何安全使用OpenLDAP。

一、使用访问控制(Access Control),实现用户认证

关于它,在OpenLDAP 2.1 Administrator's Guide里有详细说明。这里只管应用。

修改OpenLDAP的配置文件,增加控制块

# vi /usr/local/etc/openldap/slapd.conf
access to attr=userPassword
    by anonymous auth
    by self write
    by * none

access to *
    by self write
    by users read


此控制块用于禁止匿名查询,而认证用户可以修改自己的所有属性,允许查询它人的信息条目,但除了userPassword属性。基本上上面的每一行都是必须的,经过反复删除恢复,终于对访问控制块的认识有了质的飞跃。特别是对于“by anonymous auth”的理解,没有了它,需要认证的用户不能完成认证,因为它查询不到密码呀!所以“auth”在这里的作用就是允许匿名用户可以读到密码,但只能用于验证,而不能用于其它的用途,这就保证了密码属性的安全。

重启ldap服务
# /usr/local/etc/rc.d/slapd.sh restart

查询测试

1、如果还使用LDAP Browser 2.6的话,这次就可以使用其它的用户bind了,如使用用户:
uid=abc,ou=people,dc=example,dc=com
它的密码是:abcabc(见前面的例子)

2、在命令行完成

# ldapsearch -x -b 'dc=example,dc=com' 'objectClass=*'

匿名查询结果:(显然没有任何条目)


# extended LDIF
#
# LDAPv3
# base with scope sub
# filter: objectClass=*
# requesting: ALL
#

# search result
search: 2
result: 0 Success

# numResponses: 1

# ldapsearch -x -b 'dc=example,dc=com' -D 'uid=abc,ou=people,dc=example,dc=com' -w abcabc 'uid=a*'


通过指定用户查询的结果:
# extended LDIF
#
# LDAPv3
# base with scope sub
# filter: uid=a*
# requesting: ALL
#

# abc, people, example.com
dn: uid=abc,ou=people,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: abc
sn: zhangs
cn: zs
userPassword:: YWJjYWJj

# aaa, people, example.com
dn: uid=aaa,ou=people,dc=example,dc=com
objectClass: person
objectClass: organizationalPerson
objectClass: inetOrgPerson
uid: aaa
sn: aaaa
cn:: YWFkQSA=

# search result
search: 2
result: 0 Success

# numResponses: 3
# numEntries: 2


如果过滤条件还是用'objectClass=*'的话,产生的条目数很多,所以这里就必为了'uid=a*'。从结果中我们可以看到“uid=abc,ou=people,dc=example,dc=com”的userPassword属性显示了出来,而另一个用户则没有显示。上面执行的命令中红色部分分别是查询时使用的用户名和密码,其中密码就是条目“uid=abc,ou=people,dc=example,dc=com”中所存放的userPassword的值。

二、使用SSL/TLS

通过认证授权(Certificate Authority)中心发行的证书签发证书或自签发证书,这里用的是自签发证书。

参考:http://www.openldap.org/pub/ksoper/OpenLDAP_TLS_howto.html
   http://www.openldap.org/faq/data/cache/185.html

(一)服务端的证书

1、建立一临时目录

# mkdir ~/ldap
#cd ~/ldap

2、建立用于签署其它证书的CA证书(应该是X509v3格式的)
# /usr/local/openssl/misc/CA.sh -newca

如果不输入文件名,则会在当前目录下会生成demoCA目录,里边存放有cacert.pem 和private/cakey.pem (CA证书和RSA私有密钥)。在填写各项目的过程上,有些项目不是很重要,对于“Common Name”,应该填入有一定意义易于阅读的字符串,不一定是服务器的名字,我的就是abc.cn,而服务器名字为myth.unix.cn。
其实,它是一个自签署证书,此时CA已进行了自签署,而形成了根证书。其中依然有公钥和私钥。公钥可以发布,用于确认服务器证书的合法性。

2、建立服务器的“证书签署请求(certificate signing request - CSR)”,即签署请求证书

同时也将它做为服务器的私有密钥

# openssl req -newkey rsa:1024 -nodes -keyout newreq.pem -out newreq.pem

其它没什么,对于“Common Name”则一定要小心,此处应该填入服务器的FQDN(fully-qualified distinguished name),即运行OpenLDAP的服务器的完整名称,而不是一般的简写名称。如果你的服务器有多个名称,就先把主名填入这里,而对于其它的别名,则可以利用openssl.cnf文件里的subjectAltName。例如:
subjectAltName=DNS:alias1.domain1,DNS:host2.domain2,DNS:*.domain3

关于FQDN,对于unix或linux的用户来说应该不陌生,实际上在你安装系统时,配置IP地址那个地方就已经进行FQDN的设定。现在想知道你的服务器的FQDN的方法,可以通过执行

# hostname

得到,或查看/etc/rc.conf。

我的自己的名字就是:myth.unix.cn。据说90%的错误都出在这里。

查看newreq.pem的内容:

# openssl req -noout -text -in newreq.pem

3、使用前面的CA证书签署CSR,得到签署后的证书,可以发布

此证书也称为服务器证书,里面主要包含了证书的签署机构、服务器的公钥以及服务器的全域名(FQDN)等等。其有效性可以通过使用CA证书的公钥,即demoCA/cacert.pem来进行确认。主要用于对此服务器的验证。

# /usr/local/openssl/misc/CA.sh -sign

注意,不要出错,尤其是密码不要错了。除此以外,另外还有两次确认选项。


Using configuration from /etc/ssl/openssl.cnf
Enter pass phrase for ./demoCA/private/cakey.pem:
Check that the request matches the signature
Signature ok
Certificate Details:
    Serial Number: 1 (0x1)
    Validity
      Not Before: Nov 18 17:11:48 2004 GMT
      Not After : Nov 18 17:11:48 2005 GMT
    Subject:
      countryName = CN
      stateOrProvinceName = Some-State
      organizationName = Internet Widgits Pty Ltd
      commonName = myth.unix.cn
    X509v3 extensions:
      X509v3 Basic Constraints:
        CA:FALSE
      Netscape Comment:
        OpenSSL Generated Certificate
      X509v3 Subject Key Identifier:
        EC:5A:A3:89:D0:24:7F:83:70:25:E6:A6:CA:D8:35:09:5A:65:70:E3
      X509v3 Authority Key Identifier:
keyid:4E:A0:2B:E4:B2:BB:01:9B:5D:12:7D:90:79:40:22:36:8B:29:28:AC
        DirName:/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=abc.cn
        serial:00

Certificate is to be certified until Nov 18 17:11:48 2005 GMT (365 days)
Sign the certificate? [y/n]:y

1 out of 1 certificate requests certified, commit? [y/n]y
Write out database with 1 new entries
Data Base Updated
Certificate:
  Data:
    Version: 3 (0x2)
    Serial Number: 1 (0x1)
    Signature Algorithm: md5WithRSAEncryption
    Issuer: C=CN, ST=Some-State, O=Internet Widgits Pty Ltd, CN=abc.cn
    Validity
      Not Before: Nov 18 17:11:48 2004 GMT
      Not After : Nov 18 17:11:48 2005 GMT
    Subject: C=CN, ST=Some-State, O=Internet Widgits Pty Ltd, CN=myth.unix.cn
    Subject Public Key Info:
      Public Key Algorithm: rsaEncryption
      RSA Public Key: (1024 bit)
        Modulus (1024 bit):
          00:b7:7a:49:0f:53:53:b2:d0:c3:38:c5:fc:ba:1b:
          db:69:56:a6:e2:20:e8:f9:48:77:f1:95:c9:0b:f3:
          8d:0d:d6:43:7b:de:c2:82:88:58:7c:8a:0f:59:0e:
          00:46:4e:b1:ff:03:e4:49:39:1a:33:6d:94:b4:e8:
          36:e6:99:63:2a:16:21:7a:21:be:4e:92:08:92:35:
          d6:59:cd:39:9b:bc:0d:6e:31:7a:1b:e1:50:c3:e2:
          62:e0:99:1c:25:78:22:fa:e4:26:1b:b6:0c:71:0c:
          52:99:64:81:03:77:56:ec:8c:7e:3d:0a:ca:4e:9c:
          82:a9:55:5d:9d:75:64:f1:9d
        Exponent: 65537 (0x10001)
    X509v3 extensions:
      X509v3 Basic Constraints:
        CA:FALSE
      Netscape Comment:
        OpenSSL Generated Certificate
      X509v3 Subject Key Identifier:
        EC:5A:A3:89:D0:24:7F:83:70:25:E6:A6:CA:D8:35:09:5A:65:70:E3
      X509v3 Authority Key Identifier:
keyid:4E:A0:2B:E4:B2:BB:01:9B:5D:12:7D:90:79:40:22:36:8B:29:28:AC
        DirName:/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=abc.cn
        serial:00

  Signature Algorithm: md5WithRSAEncryption
    67:bf:f5:2e:6b:7e:e1:53:48:56:4e:91:30:87:38:57:ff:23:
    c3:b3:71:ed:fd:d7:bd:7c:22:8b:76:9a:0e:c0:e6:4d:19:91:
    86:d3:af:ce:08:b2:01:ba:df:f6:d3:8c:3a:11:f6:10:f6:09:
    3d:be:61:e2:39:77:5b:d2:1b:a7:bb:fb:a4:37:bf:79:54:ad:
    82:9e:dc:c8:85:a6:39:4b:b9:d1:02:16:f5:4f:6f:30:4a:02:
    96:8e:0b:06:85:da:5e:3b:00:af:1a:b1:fb:31:55:69:6c:21:
    e3:4a:d8:17:3d:92:69:12:d6:c7:40:58:8b:8b:ba:77:73:31:
    58:41
-----BEGIN CERTIFICATE-----
MIIDBDCCAm2gAwIBAgIBATANBgkqhkiG9w0BAQQFADBWMQswCQYDVQQGEwJDTjET
.......
i4u6d3MxWEE=
-----END CERTIFICATE-----
Signed certificate is in newcert.pem

4、将这些证书移动到一个指定的地方

# cp demoCA/cacert.pem /usr/local/etc/openldap/
# cp newcert.pem /usr/local/etc/openldap/servercrt.pem
# cp newreq.pem /usr/local/etc/openldap/serverkey.pem
# chmod 400 /usr/local/etc/openldap/serverkey.pem

最后一条命令是更改serverkey.pem的访问权限,因为它是做为服务器的私有密钥出现,不允许他人访问。

5、修改OpenLDAP服务器配置

# vi /usr/local/etc/openldap/slapd.conf

增加如下内容:


TLSCipherSuite HIGH:MEDIUM:+SSLv2
TLSCACertificateFile /usr/local/etc/openldap/cacert.pem
TLSCertificateFile /usr/local/etc/openldap/servercrt.pem
TLSCertificateKeyFile /usr/local/etc/openldap/serverkey.pem
TLSVerifyClient try

注意:对于TLSVerifyClient的各个选项是,如果这里设定为demand,则后面的连接会出现问题,而对于try、allow则没有问题。说不定是OpenLDAP或OpenSSL的bug,我使用的分别是:openssl-0.9.7d_1和openldap-server-2.2.15

# vi /etc/rc.conf

修改相关内容为:

slapd_enable="YES"
slapd_flags='-h "ldapi://%2fvar%2frun%2fopenldap%2fldapi/ ldap://0.0.0.0/ ldaps://0.0.
0.0/"'
slapd_sockets="/var/run/openldap/ldapi"

6、重启OpenLDAP服务器

# /usr/local/etc/rc.d/slapd.sh restart
# sockstat -l

USER COMMAND PID FD PROTO LOCAL ADDRESS FOREIGN ADDRESS
ldap slapd 717 8 stream /var/run/openldap/ldapi
ldap slapd 717 9 tcp4 *:389 *:*
ldap slapd 717 10 tcp4 *:636 *:*

此时服务器应该就可以使用了。下面是对客户端的配置

(二)客户端的证书

建立客户端证书与建立服务器端的证书过程方法基本一样。再次提醒关于"Common Name",应该根据客户端的情况来填入FQDN。关于客户端的CA证书应该有很多,因为它可能要连接多个LDAP服务器,而每一个服务器都会有一个CA证书。这里就要使用先前建立的那个CA证书。

1、获得LDAP服务端的CA证书。这里直接使用了LDAP的CA证书。

2、生成客户端的CSR,得到newreq.pem

提示:这里对“Common Name”的要求不是那么,即不一定是客端的名字

# openssl req -newkey rsa:1024 -nodes -keyout newreq.pem -out newreq.pem

3、使用服务端的CA证书签署刚才的CSR,得到newcrt.pem

# /usr/local/openssl/misc/CA.sh -sign

4、复制newreq.pem和newcrt.pem到一个指定的地方

# cp newcert.pem /usr/local/etc/openldap/client.cert.pem # cp newreq.pem /usr/local/etc/openldap/client.key.pem # chmod 400 /usr/local/etc/openldap/client.key.pem
client.key.pem为客户端的私钥,所以要更读取权限。 5、修改客户端的配置
# vi /usr/local/etc/openldap/ldap.conf

修改相关内容为:

HOST localhost
PORT 636

TLS_CACERT /usr/local/etc/openldap/cacert.pem
TLS_REQCERT demand


注意:ldap.conf是用于设定客户端全局变量用的。选项TLS_REQCERT默认为demand,即要求验证服务端,如果在连接LDAP服务器时出现了什么错误,很大可能就是TLS_CACERT所指定的CA证书不对。在这里它直接指向服务端所使用的CA证书。

实际上,在这个时候就已经可以进行SSL的连接了,如果服务端的TLSVerifyClient选项不是设定为demand或hard的话。如果是设定为demand,则在客户端还要进行下面的配置。

针对特定的登录用户进行设定,利用.ldaprc文件加载公钥和私钥:

# vi ~/.ldaprc

类似TLS_CERT和TLS_KEY等user-only类型的选项,只能用于此文件中。
TLS_CERT /usr/local/etc/openldap/client.cert.pem
TLS_KEY /usr/local/etc/openldap/client.key.pem

注意:.ldaprc使用户可以根据自己的需要来设定选项的值,如果设定了全局选项的值,则它会自动重载ldap.conf里的相应选项。

(三)查询测试

1、使用openssl连接测试

注意:TLSVerifyClient选项若不为demand,则使用

# openssl s_client -connect localhost:636 -showcerts -state -CAfile /usr/local/etc/openldap/cacert.pem

若为demand,则使用

# openssl s_client -connect myserver.com:636 -state -CAfile /usr/local/etc/openldap/cacert.pem -cert /usr/local/etc/openldap/client.cert.pem -key /usr/local/etc/openldap/client.key.pem

下面的结果是第一种情况的输出。

CONNECTED(00000003)
SSL_connect:before/connect initialization
SSL_connect:SSLv2/v3 write client hello A
SSL_connect:SSLv3 read server hello A
depth=1 /C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=abc.cn
verify return:1
depth=0 /C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=myth.unix.cn
verify return:1
SSL_connect:SSLv3 read server certificate A
SSL_connect:SSLv3 read server certificate request A
SSL_connect:SSLv3 read server done A
SSL_connect:SSLv3 write client certificate A
SSL_connect:SSLv3 write client key exchange A
SSL_connect:SSLv3 write change cipher spec A
SSL_connect:SSLv3 write finished A
SSL_connect:SSLv3 flush data
SSL_connect:SSLv3 read finished A

---
Certificate chain
0 s:/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=myth.unix.cn
i:/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=abc.cn
-----BEGIN CERTIFICATE-----
MIIDBDCCAm2gAwIBAgIBATANBgkqhkiG9w0BAQQFADBWMQswCQYDVQQGEwJDTjET
......
i4u6d3MxWEE=
-----END CERTIFICATE-----
1 s:/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=abc.cn
i:/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=abc.cn
-----BEGIN CERTIFICATE-----
MIIC0zCCAjygAwIBAgIBADANBgkqhkiG9w0BAQQFADBWMQswCQYDVQQGEwJDTjET
.....
X9KQMC6DWw==
-----END CERTIFICATE-----
---
Server certificate
subject=/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=myth.unix.cn
issuer=/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=abc.cn
---
Acceptable client certificate CA names
/C=CN/ST=Some-State/O=Internet Widgits Pty Ltd/CN=abc.cn
---
SSL handshake has read 1767 bytes and written 352 bytes
---
New, TLSv1/SSLv3, Cipher is AES256-SHA
Server public key is 1024 bit
SSL-Session:
Protocol : TLSv1
Cipher : AES256-SHA
Session-ID: 74F46023120F479F44AE52D3C5E9EC45315CDB301F22A94498256862FF6BE0A1
Session-ID-ctx:
Master-Key: F419DE4C85D016B678AB535084A485B5794FF5E9E3170FD081A95167F59A4684
Key-Arg : None
Start Time: 1100800508
Timeout : 300 (sec)
Verify return code: 0 (ok)
---
^C

许多人在粗体字那个地方出错,常见的错误我也是遇到的,主要就是TLSVerifyClient设置为了demand。

2、使用ldapsearch测试

# ldapsearch -x -b 'dc=example,dc=com' -D 'cn=zxp,dc=example,dc=com' -w secret -H ldaps://localhost/ '(objectclass=*)' -ZZ

对于OpenLDAP 2.2 来说"-ZZ"好象已不太重要。


# ldapsearch -x -b 'dc=example,dc=com' -D 'uid=abc,ou=People,dc=example,dc=com' -w abcabc -H ldaps://localhost/ '(objectclass=*)'

搜索到条目若干,成功!

总结

实际上,OpenLDAP也支持中文,甚至连象uid这样的标识的值都可以为中文,其它属性的值当然也可以为中文了。不过直接导入中文是不行的,必须将中文编码为utf-8这一类的字符集。经过实践,只认识到这么多的内容。感兴趣的朋友可以一起讨论。

参考:

  用OpenLdap建立网络数据库 http://www.chinalinuxpub.com/read.htm?id=1159
  LDAPman RFC page http://www.ldapman.org/ldap_rfcs.html
  SSL技术专题 http://www.chinaitlab.com/www/special/ssl.asp
  OpenSSL Certificate Cookbook http://www.pseudonym.org/ssl/ssl_cook.html

,
相关文章 热门文章
  • freebsd 安装邮件系统extmail 防毒 防垃圾
  • FreeBSD上建立一个功能完整的邮件服务器(POSTFIX)
  • Freebsd环境下基于qmail系统的反病毒反垃圾邮件系统构建
  • 用Postfix架设FreeBSD下中小规模邮件系统
  • FreeBSD 服务器上彻底禁用 sendmail
  • 门户级反垃圾邮件系统KBAS发布FreeBSD版本
  • 在 FreeBSD 上彻底禁用 sendmail
  • 制作可以随身携带的FreeBSD系统
  • FreeBSD安装配置E-mail服务器
  • RSYNC ON FreeBSD 5.2 HOWTO V1.0
  • 浅谈FreeBSD 5.2常用操作的改变
  • FreeBSD 6.0-下建立高速DNS缓存服务器
  • 制作U盘启动的RAMDISK为根目录的FreeBSD
  • 打造FreeBSD桌面系统
  • 菜鸟学装FreeBSD5.1图解(一)
  • Free BSD常用指令简述
  • 使用FreeBSD的SNMP+MRTG网络流量分析
  • 菜鸟学装FreeBSD5.1图解(二)
  • 使用FreeBSD配置基于ADSL的VPN网关+防火墙
  • 安装实战:FreeBSD6.1桌面安装指南
  • 制作软盘上运行的FreeBSD系统
  • FreeBSD 5.0 硬盘安装指南
  • 给FreeBSD新手的一些建议
  • 新兴桌面软件 Ubuntu叫板 Windows
  • 自由广告区
     
    最新软件下载
  • SharePoint Server 2010 部署文档
  • Exchange 2010 RTM升级至SP1 教程
  • Exchange 2010 OWA下RBAC实现的组功能...
  • Lync Server 2010 Standard Edition 标..
  • Lync Server 2010 Enterprise Edition...
  • Forefront Endpoint Protection 2010 ...
  • Lync Server 2010 Edge 服务器部署文档
  • 《Exchange 2003专家指南》
  • Mastering Hyper-V Deployment
  • Windows Server 2008 R2 Hyper-V
  • Microsoft Lync Server 2010 Unleashed
  • Windows Server 2008 R2 Unleashed
  • 今日邮件技术文章
  • 腾讯,在创新中演绎互联网“进化论”
  • 华科人 张小龙 (中国第二代程序员 QQ...
  • 微软推出新功能 提高Hotmail密码安全性
  • 快压技巧分享:秒传邮件超大附件
  • 不容忽视的邮件营销数据分析过程中的算..
  • 国内手机邮箱的现状与未来发展——访尚..
  • 易观数据:2011Q2中国手机邮箱市场收入..
  • 穿越时空的爱恋 QQ邮箱音视频及贺卡邮件
  • Hotmail新功能:“我的朋友可能被黑了”
  • 入侵邻居网络发骚扰邮件 美国男子被重..
  • 网易邮箱莫子睿:《非你莫属》招聘多过..
  • 中国电信推广189邮箱绿色账单
  • 最新专题
  • 鸟哥的Linux私房菜之Mail服务器
  • Exchange Server 2010技术专题
  • Windows 7 技术专题
  • Sendmail 邮件系统配置
  • 组建Exchange 2003邮件系统
  • Windows Server 2008 专题
  • ORF 反垃圾邮件系统
  • Exchange Server 2007 专题
  • ISA Server 2006 教程专题
  • Windows Vista 技术专题
  • “黑莓”(BlackBerry)专题
  • Apache James 专题
  • 分类导航
    邮件新闻资讯:
    IT业界 | 邮件服务器 | 邮件趣闻 | 移动电邮
    电子邮箱 | 反垃圾邮件|邮件客户端|网络安全
    行业数据 | 邮件人物 | 网站公告 | 行业法规
    网络技术:
    邮件原理 | 网络协议 | 网络管理 | 传输介质
    线路接入 | 路由接口 | 邮件存储 | 华为3Com
    CISCO技术 | 网络与服务器硬件
    操作系统:
    Windows 9X | Linux&Uinx | Windows NT
    Windows Vista | FreeBSD | 其它操作系统
    邮件服务器:
    程序与开发 | Exchange | Qmail | Postfix
    Sendmail | MDaemon | Domino | Foxmail
    KerioMail | JavaMail | Winwebmail |James
    Merak&VisNetic | CMailServer | WinMail
    金笛邮件系统 | 其它 |
    反垃圾邮件:
    综述| 客户端反垃圾邮件|服务器端反垃圾邮件
    邮件客户端软件:
    Outlook | Foxmail | DreamMail| KooMail
    The bat | 雷鸟 | Eudora |Becky! |Pegasus
    IncrediMail |其它
    电子邮箱: 个人邮箱 | 企业邮箱 |Gmail
    移动电子邮件:服务器 | 客户端 | 技术前沿
    邮件网络安全:
    软件漏洞 | 安全知识 | 病毒公告 |防火墙
    攻防技术 | 病毒查杀| ISA | 数字签名
    邮件营销:
    Email营销 | 网络营销 | 营销技巧 |营销案例
    邮件人才:招聘 | 职场 | 培训 | 指南 | 职场
    解决方案:
    邮件系统|反垃圾邮件 |安全 |移动电邮 |招标
    产品评测:
    邮件系统 |反垃圾邮件 |邮箱 |安全 |客户端
    广告联系 | 合作联系 | 关于我们 | 联系我们 | 繁體中文
    版权所有:邮件技术资讯网©2003-2010 www.5dmail.net, All Rights Reserved
    www.5Dmail.net Web Team   粤ICP备05009143号