در شکل زیر معماری کلی از سرویس ایمیل 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
اگر قبلا در بیان ثبت نام کرده اید لطفا ابتدا وارد شوید، در غیر این صورت می توانید ثبت نام کنید.