در شکل زیر معماری کلی از سرویس ایمیل Zarafa آمده است. این سامانه برای هر ماژول خود مانند وب، دریافت ایمیل های pop3,imap مسائل امنیتی و spam به صورت مجزا قابل راه اندازی است. کل سیستم  قابل نصب بر روی مراکز داده توزیع شده در سطح کشور هستند:

 

در ادامه روش نصب و راه اندازی سرویس ایمیل zarafa که یک میل سرور متن باز است به همراه تنظیمات و اسکریپت های مورد نیاز در ادامه تشریح شده است.

1.1.4 وضعیت و معماری قرار گیری

این سرویس به صورت clustering در معماری قرار می گیرد و هر نود با حداکثر 5000 کاربر سرویس می دهد.

2.1.4 سخت افزار مورد نیاز (مقدار HDD,RAM, …)

Ram = 4GB

Hdd = 5GB /

Hdd = 5GB /var/log

Hdd = 5GB /var/lib/ldap

Hdd = 15GB /var/lib/zarafa

 

3.1.4 OS مورد نیاز و تغییرات لازم روی OS

CENTOS

4.1.4 سرویس های مورد نیاز به همراه version

Mysql,httpd,php,ldap

 

5.1.4 پورتهای مورد نیاز برای NAT شدن  روی فایروال

ندارد

6.1.4 پورتهای مورد نیاز برای دسترسی به این ماشین

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -s 84.241.6.197

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -s 84.241.6.197

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT -192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2003 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2003 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 236 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 236 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT -s IP BACKUP SERVER

 

7.1.4 کانفیگهای سرویس

1-Zarafa-server

vim /etc/zarafa/server.cfg

> user_plugin             = ldap

> user_safe_mode = no

> enable_hosted_zarafa = true

> hide_everyone = yes

> local_admin_users       = root

##############connect zarafa-server to mysqlserver)

> mysql_host              =       IPMYSQLSERVER

> mysql_port              =       3306

> mysql_user              =       USERMYSQLZCP

> mysql_password     =       PASSUERZCP

 

2-Zarafa-spooler

vim /etc/zarafa/spooler.cfg

> smtp_server     =       IPADDRESSPOSFIX

> allow_send_to_everyone = no

 

3-Zarafa-dagent

vim /etc/zarafa/dagent.cfg

> server_bind = 0.0.0.0

 

4-ldap.openldap

vim /etc/zarafa/ldap.openldap.cfg

> ldap_bind_user = uid=usernode,ou=user,dc=elenoon,dc=ir

> ldap_bind_passwd = PASSBIND

 

5-Zarafa-monitor

vim /etc/zarafa/monitor.cfg

> mailquota_resend_interval = 7

# Quota check interval (in minutes)

> quota_check_interval = 15

 

 

6-Zarafa-check

vim /home/check/checkzarafa.php

> $user_admin = "ADMINSMSENGIN";

> $admin_pass = "PASSADMINSMSENGIN ";

> $url = sprintf("http://sms-00001.c001.inelenoon.ir/SMSEngine-SOAP/%s?wsdl",$method);

> $ADMINUSERNAME = "amaradmin@MYDOMAIN";

> $ADMINPASSWORD = "PASSamaradmin ";

> $SERVER = "http://127.0.0.1:236/zarafa";

 

 

8.1.4 محل ذخیره‌سازی لاگها

1-ZARAFA

vim /var/log/zarafa/*

2-Zarafa-check

vim /home/check/logon_check.log

9.1.4 ارتباط با سرویس‌های دیگر

1-zarafa

MYSQL : برای ذخیره سازی داده ها

Ldap : ذخیره اطلاعات کاربرها

Smsengine : زدن sms

 

10.1.4 ایجاد ماشین با نیازمندی های آن

به مسیر زیر رفته تا در آن یک repo جدید برای نصب rpm های مورد نیاز بسازیم و repo های فعلی را غیرفعال کنیم و در یک فولدر جدید ذخیره کنیم

cd /etc/yum.repos.d/

mkdir bak

mv * bak

vim zcprpmbuild.repo

در این فایل مقادیر زیرا قرار دهید

###

[zcpnoe]

name= zcpnoe

baseurl=http://IP REPO SERVER/zcpnoe

enabled=1

gpgcheck=0

###

 

yum install  yum install zarafa* mysql* openldap* -y

yum install xindet rsync ntpdate  gperftool* xap*  php-soap mysql* openldap* 

 

 

11.1.4 تنظیم کردن اتصال به ldap

 فایل های  slapd.conf و ldap.conf  با محتوای درج شده در عنوان slapd و ldap واقع در پیوست را ایجاد کرده و در مسیر زیر کپی نمایید.

Cd /etc/openldap

برای دادن پسورد به ldapserver دستور زیر را اجرا کرده و پسورد ایجاد شده را ذخیره کرده

Slappasswd

 

پسورد ایجاد شده در دستور قبل را در فایل slapd.conf در قسمتی مانند زیر قرار دهید

rootpw                                 {SSHA}DohMqNm8pP+KMWqDKRMfqpYLbPkm/nl8

 

 

فایل zarafa.schema را با توجه به محتوای درج شده در عنوان zarafa.schema  واقع در پیوست ایجاد نموده و در مسیر زیر کپی نمایید.

/etc/openldap/schema/

 

برای ایجاد کردن درخت الدپ، فایل های ldaprestor.txt و backup.ldif را با توجه به محتوای درج شده در عنوان ldaprestor و backup واقع در پیوست ایجاد نموده و در /root  کپی کرده و دستور زیرا اجرا کرده و فقط در داخل فایل backup.ldif، به جای مقدار PASSADMIN   پسوردی که در بالا برای دستور Slappasswd قرار دهید و به  جای مقدار PASSBIND  پسورد مورد نظر برای ارتباط zcp به ldap   را قرار دهید و به جای مقدار PASSREPLI   پسورد مورد نظر برای ماشینی که می خواهد عمل replication را با ldapserver شما انجام دهد مقدار دهید.

فعال کردن log سرویس ldap

mkdir /var/log/slapd 

chmod 755 /var/log/slapd/

chown ldap:ldap /var/log/slapd/

sed -i "/local4.*/d" /etc/rsyslog.conf

cat >> /etc/rsyslog.conf << EOF

local4.*                        /var/log/slapd/slapd.log

EOF

 

service rsyslog restart

 

12.1.4 تنظیم zcp

تنظیمات زیر را در server.cfg اعمال نمایید

 

vim /etc/zarafa/server.cfg

user_plugin             = ldap

user_safe_mode = no

enable_hosted_zarafa = true

hide_everyone = yes

local_admin_users       = root

(Note:connect zarafa-server to mysqlserver)

mysql_host              =          IPMYSQLSERVER

mysql_port              =          3306

mysql_user              =          USERMYSQLZCP

mysql_password     =          PASSUERZCP

 

این تغییرات را نیز در dagent.cfg و spooler.cfg اعمال نمایید

 

vim /etc/zarafa/dagent.cfg

server_bind = 0.0.0.0

 

vim /etc/zarafa/spooler.cfg

smtp_server     =       IPADDRESSPOSFIX

allow_send_to_everyone = no

اتصال zcp  به ldap  در مسیر زیر انجام می شود

vim /etc/zarafa/ldap.openldap.cfg

ldap_bind_user = uid=zarafausernode,ou=zarafauser,dc=elenoon,dc=ir

ldap_bind_passwd = PASSBIND

در مسیر /etc/zarafa  در تمام فایل های *.cfg مقدار

run_as_user =

run_as_group =

خالی قرار داده و اگر مثلا مقدار zarafa بود پاک کرده و خالی بگذارید

 

در نهایت با دستور زیر تمام سرویس ها راه اندازی کنید

mkdir /var/log/zarafa

for i in /etc/init.d/zarafa*; do $i restart; done

 

قرار دادن سرویس های zarafa در startup

chkconfig --levels 345 zarafa-dagent on

chkconfig --levels 345 zarafa-gateway on

chkconfig --levels 345 zarafa-monitor on

chkconfig --levels 345 zarafa-server on

chkconfig --levels 345 zarafa-search on

chkconfig --levels 345 zarafa-spooler on

chkconfig xinetd on

chkconfig slapd on

chkconfig --levels 235 httpd on

 

13.1.4 تنظیم اسکریپ های مورد نیاز

دستور crontab -e را زده و مقدار های زیر را در ان قرار داده و ذخیره کرده

*/5 * * * * /home/filterbackup/sync.sh  > /dev/null 2>&1

00 00 * * *  /home/filterbackup/logrename.sh >/dev/null 2>&1

0 */1 * * *  /home/filterbackup/backuphourldap.sh >/dev/null 2>&1

10 1 * * * /usr/sbin/ntpdate -s -b -p 8 -u 172.16.0.1 > /dev/null 2>&1

 

اسکریپت های logrename.sh، sync.sh، backuphourldap.sh و bachup.sh را از محتوای درج شده با همین عناوین واقع در پیوست ایجاد نموده و در مسیر /home/filterbackup کپی نمایید.

 

14.1.4 تنظیم فایروال ماشین

 این مقادیر را در مسیر زیر قرار داده

*filter

:INPUT ACCEPT [0:0]

:FORWARD ACCEPT [0:0]

:OUTPUT ACCEPT [0:0]

-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

-A INPUT -p icmp -j ACCEPT

-A INPUT -i lo -j ACCEPT

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -s 84.241.6.197

-A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 389 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -s 84.241.6.197

-A INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 143 -j ACCEPT -192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 110 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2003 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 2003 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 236 -j ACCEPT -s 172.16.0.0/12

-A INPUT -m state --state NEW -m tcp -p tcp --dport 236 -j ACCEPT -s 192.168.0.0/16

-A INPUT -m state --state NEW -m tcp -p tcp --dport 873 -j ACCEPT -s IP BACKUP SERVER

-A INPUT -j REJECT --reject-with icmp-host-prohibited

-A FORWARD -j REJECT --reject-with icmp-host-prohibited

COMMIT

در فایل /etc/bashrc مقدار زیر را

  [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h  \W]\\$ "

به مقدار زیر تغییر دهید

  [ "$PS1" = "\\s-\\v\\\$ " ] && PS1="[\u@\h:`hostname -I` \W]\\$ "

 

غیر فعال کردن selinux

vim /etc/sysconfig/selinux

SELINUX=disabled