PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : نصب و راه اندازی یک Mail Server کامل با qmail



hamed_p
20th May 2013, 14:49
نصب و راه اندازی یک Mail Server کامل با qmail
موضوع : نصب و راه اندازی کامل یک Mail Server با استفاده از qmail به همراه آموزش کامل تنظیمات DNS و ست کردن Domainkey و DKIM.


قسمت اول شامل : تعاریف،پیش نیازها،نصب Qmail،نصب DNS Server


تعاریف :

qmail : نرم افزاری open source برای ایجاد یک Mail Server بر روی بستر لینوکس که قابلیت پشتیبانی از SMTP,POP3,IMAP و ... را دارد و همچنین به همراه پکیج های مدیریتی بسیاری ارائه شده است که میتوان به web mail,mrtg و webadmin اشاره کرد

تنظیمات DNS : جزء جدا نشدنی یک میل سرور کامل و سالم که میبایست بدون کوچکترین عیب و ایرادی تنظیم شود، به این علت که میل سرور های دیگر از جمله yahoo,google,live و ... به طور جدی نسبت به تنظیمات DNS حساسیت نشون میدن و مانع ورود ایمیل هایی بدون تنظیمات DNS صحیح خواهند شد.

Domainkey : یک کلید برای اهراز هویت نام Domain که ابداعی از yahoo هست و به منظور جلوگیری هرچه بیشتر از Spam ایجاد شده.
میتوانید مطالب بیشتر را در آدرس :DomainKey Library and Implementor's Tools (http://antispam.yahoo.com/domainkeys) که یک پروژه opensource از **** درhttp://domainkeys.sourceforge.net (http://domainkeys.sourceforge.net/) میباشد پیگیری کنید.

DKIM : ابداعی دیگر که کارائی همانند Domainkey دارد. مطالب بیشتر در این خصوص را در DKIM.org پیگیری نمایید.


پیش نیاز ها :
مرحله 1 : یکی از توزیع های لینوکس. این مقاله بر اساس توزیع Centos 5 تهیه شده است.


مرحله 2 : حذف پکیجهای نا سازگار

کد:
کد PHP:

yum -y remove sendmail
yum -y remove openssl
yum -y remove cyrus-imapd




مرحله 3: نصب پکیجهای مورد نیاز

کد:
کد PHP:

yum -y install autoconf automake automake17 bzip2 bzip2-devel bzip2-libs compat-gcc-34 compat-gcc-34-C++‎ compat-glibc compat-glibc-headers compat-libf2c compat-libgcc compat-libstdC++‎-296 compat-libsdC++‎-33 curl curl-devel expect expect-devel gcc gcc-C++‎ gdbm gdbm-devel gmp gmp-devel httpd httpd-devel httpd-manual krb5-auth-dialog krb5-devel krb5-libs krb5-workstation libgcc libidn libidn-devel libtool libtool-ltdl libtool-ltdl-devel mysql mysql-bench mysql-devel mysql-server mrtg ncurses-devel ntp openssh openssh-clients openssh-askpass openssh-server openssl openssl-devel pcre pcre-devel perl-Digest-HMAC perl-Digest-SHA1 perl-HTML-Parser perl-libwww-perl perl-Net-DNS php php-ldap php-mysql php-pear redhat-rpm-config rpm rpm-build rpm-devel rpm-libs rpm-python sed setup setuptool stunnel system-config-date wget which xinetd zlib zlib-devel


مرحله 4: نصب پکیجهای Perl برای Spamassassin

کد:
کد PHP:

perl -e 'use CPAN; install MIME::Base64;'
perl -e 'use CPAN; install DB_File;'
perl -e 'use CPAN; install Net::DNS;'
perl -e 'use CPAN; install Net::SMTP;'
perl -e 'use CPAN; install Mail::SPF::Query;'
perl -e 'use CPAN; install Time::HiRes;'
perl -e 'use CPAN; install Mail::DomainKeys;'
perl -e 'use CPAN; install IO::Zlib;'
perl -e 'use CPAN; install Archive::Tar;'



مرحله 5: Stop سرویس های غیر ضروری و استارت سرویس های ضروری.

کد:
کد PHP:

chkconfig httpd on
service httpd start

chkconfig mysqld on
service mysqld start

chkconfig ntpd on
service ntpd start


مرحله 6: تنظیمات mysql

کد:
کد PHP:

mysqladmin -uroot -prootpassword
mysqladmin -uroot -prootpassword reload
mysqladmin -uroot -prootpassword refresh



ایجاد دیتابیس برای vpopmail

کد:
کد PHP:

mysqladmin create vpopmail -uroot -prootpassword
mysqladmin -uroot -prootpassword reload
mysqladmin -uroot -prootpassword refresh

echo "GRANT ALL PRIVILEGES ON vpopmail.* TO vpopmail@localhost IDENTIFIED BY 'vpopmailpassword'" | mysql -uroot -prootpassword
mysqladmin -uroot -prootpassword reload
mysqladmin -uroot -prootpassword refresh


مرحله 7: runlevel 3

کد:
کد PHP:

cp -u /etc/inittab /etc/inittab.bak
cat /etc/inittab | sed -e 's/^id:5:initdefault:/id:3:initdefault:/' > /etc/inittab.new
mv -f /etc/inittab.new /etc/inittab


مرحله 8: ایجاد symbol link برای krb5 com_err.h

کد:
کد PHP:

ln -s /usr/include/et/com_err.h /usr/include/com_err.h


مرحله 9 : به روز رسانی مخزن yum
کد:
کد PHP:

yum -y update


مرحله 10: ریبوت سیستم
کد:
کد PHP:

reboot


نصب Qmail :

مرحله 1: دریافت پکیجهای مربوط
کد:
کد PHP:

mkdir -p /usr/src/qtms-install
cd /usr/src/qtms-install

wget http://www.qmailtoaster.com/download/zlib-1.2.3-1.0.3.src.rpm
wget http://www.qmailtoaster.com/download/daemontools-toaster-0.76-1.3.4.src.rpm
wget http://www.qmailtoaster.com/download/ucspi-tcp-toaster-0.88-1.3.6.src.rpm
wget http://www.qmailtoaster.com/download/vpopmail-toaster-5.4.17-1.3.5.src.rpm
wget http://www.qmailtoaster.com/download/libdomainkeys-toaster-0.68-1.3.4.src.rpm
wget http://www.qmailtoaster.com/download/libsrs2-toaster-1.0.18-1.3.4.src.rpm
wget http://www.qmailtoaster.com/download/qmail-toaster-1.03-1.3.16.src.rpm
wget http://www.qmailtoaster.com/download/courier-authlib-toaster-0.59.2-1.3.7.src.rpm
wget http://www.qmailtoaster.com/download/courier-imap-toaster-4.1.2-1.3.8.src.rpm
wget http://www.qmailtoaster.com/download/autorespond-toaster-2.0.4-1.3.4.src.rpm
wget http://www.qmailtoaster.com/download/control-panel-toaster-0.5-1.3.5.src.rpm
wget http://www.qmailtoaster.com/download/ezmlm-toaster-0.53.324-1.3.4.src.rpm
wget http://www.qmailtoaster.com/download/qmailadmin-toaster-1.2.11-1.3.5.src.rpm
wget http://www.qmailtoaster.com/download/qmailmrtg-toaster-4.2-1.3.4.src.rpm
wget http://www.qmailtoaster.com/download/maildrop-toaster-2.0.3-1.3.6.src.rpm
wget http://www.qmailtoaster.com/download/isoqlog-toaster-2.1-1.3.5.src.rpm
wget http://www.qmailtoaster.com/download/squirrelmail-toaster-1.4.17-1.3.12.src.rpm
wget http://www.qmailtoaster.com/download/spamassassin-toaster-3.2.5-1.3.15.src.rpm
wget http://www.qmailtoaster.com/download/clamav-toaster-0.95.1-1.3.27.src.rpm
wget http://www.qmailtoaster.com/download/ripmime-toaster-1.4.0.6-1.3.4.src.rpm
wget http://www.qmailtoaster.com/download/simscan-toaster-1.3.1-1.3.7.src.rpm
wget http://www.qmailtoaster.com/download/vqadmin-toaster-2.3.4-1.3.4.src.rpm
wget http://www.qmailtoaster.com/download/djbdns-1.05-1.0.6.src.rpm

hamed_p
20th May 2013, 14:50
مرحله 2: نصب پکیجها

کد:
کد PHP:

wget http://www.qmailtoaster.com/centos/cnt50/cnt50-install-script.sh
sh cnt50-install-script.sh


در این مرحله میتوانید تمام مراحل را با استفاده از Enter نصب نمایید.
توجه : نصب همه پکیجها الزامیست در صورتی که از DNS Server bind استفاده میکنید در این صورت از نصب پکیج djbdns-1.05-1.0.6.src.rpm جلوگیری کنید تا دچار تداخل نشوید.
توجه : در هنگام نصب پکیجها در صورت وجود هرگونه تداخل از نصب پکبج جلوگیری میشود.

مرحله 3: تنظیم سرویس های startup
کد:
کد PHP:

chkconfig acpid on
chkconfig anacron on
chkconfig atd on
chkconfig autofs on
chkconfig cpuspeed on
chkconfig crond on
chkconfig freshclam on
chkconfig haldaemon on
chkconfig httpd on
chkconfig iptables on
chkconfig kudzu on
chkconfig messagebus on
chkconfig mysqld on
chkconfig network on
chkconfig ntpd on
chkconfig qmail on
chkconfig smartd on
chkconfig sshd on
chkconfig syslog on
chkconfig xinet on
chkconfig irqbalance on


نصب DNS Server:
در این مقاله از bind استفاده شده است.

مرحله 1: نصب پکیجهای مورد نیاز

کد:
کد PHP:

yum -y install bind bind-chroot bind-devel bind-libbind-devel bind-libs bind-utils ypbind caching-nameserver


مرحله 2: تنظیم DNS Server داخلی

کد:
کد PHP:

echo "search your-domain.com" > /etc/resolv.conf

echo "nameserver 127.0.0.1" >> /etc/resolv.conf


مرحله 3: Start Up Dns Server
کد:
کد PHP:

chkconfig named on


مرحله 4: ریبوت سیستم

کد:
کد PHP:

reboot



آزمایش صحت نصب برنامه :

کد:
کد PHP:

qmailctl stat


و در جواب داریم :
کد:
کد PHP:

authlib: up (pid 2425) 65 seconds
clamd: up (pid 2425) 65 seconds
imap4: up (pid 2421) 65 seconds
imap4-ssl: up (pid 2423) 65 seconds
pop3: up (pid 2414) 65 seconds
pop3-ssl: up (pid 2409) 65 seconds
send: up (pid 2416) 65 seconds
smtp: up (pid 2418) 65 seconds
spamd: up (pid 2407) 65 seconds
authlib/log: up (pid 2417) 65 seconds
clamd/log: up (pid 2417) 65 seconds
imap4/log: up (pid 2422) 65 seconds
imap4-ssl/log: up (pid 2424) 65 seconds
pop3/log: up (pid 2415) 65 seconds
pop3-ssl/log: up (pid 2413) 65 seconds
send/log: up (pid 2420) 65 seconds
smtp/log: up (pid 2419) 65 seconds
spamd/log: up (pid 2408) 65 seconds

hamed_p
20th May 2013, 14:51
بخش دوم : افزودن Domain و User و تنظیمات webmail و مدیریت web



با استفاده از دستورات زیر میتوانیم دامین خود که در این مقاله mydomain.com نام گذاری شده را تعریف و همچنین کاربران هر دامین را تعریف نماییم.

افزودن دامین جدید :
کد:
کد PHP:

/home/vpopmail/bin/vadddomain mydomain.com <postmaster-password>


توجه کنید : برای هر دامین که افزوده میشود یک آدرس با نام postmaster ایجاد میگردد که password آن به جای <postmaster-password> قرار میگیرد.

افزودن User جدید :
کد:
کد PHP:

/home/vpopmail/bin/vadduser info@mydomain.com <email-password>


تنظیمات Web Interface :
ابتدا php.ini را واقع در etc ویراش میکنیم و register_globals را برابر با On قرار میدهیم سپس سرویس httpd را رستارت میکنیم.
کد:
کد PHP:

vi /etc/php.ini

#Now Set
register_globals = On
#Now
service httpd restart


حال میتوانید interface خود را در آدرس MyDomain.com | 404 Error (http://mydomain.com/admin-toaster) مشاهده کنید.
نام کاربری : admin
پسورد پیش فرض : toaster

در این اینتر*** میتوانید: دامین اضافه کنید، کاربر برای هر دامین اضافه کنید، گزارشی از ایمیل های ورودی و خروجی از سرور داشته باشید و همچنین mrtg سرور خود را مشاهده کنید.

توجه : در صورتی که Isoqlog را مشاهده نکردید باید Script زیر را اجرا نمایید.

کد:
کد PHP:

sh /usr/share/toaster/isoqlog/bin/cron.sh



Web Mail :
برای استفاده از webmail میتوانید از آدرس MyDomain Login (http://mydomain.com/webmail) استفاده نمایید.
توجه کنید! اگر طبق این مقاله پیش آمده باشید در وضعیت فعلی تنها از طریق وب میل قادر به ارسال ایمیل به دیگر میل سرور ها هستید، تنظیمات مربوط به Relay IP در قسمتهای بعدی توضیح داده خواهد شد.

hamed_p
20th May 2013, 14:52
بخش سوم : توضیحاتی در مورد تنظیمات DNS Server




در سالهای اخیر با گسترش هرز نامه ها، میل سرور های محبوب هر کدام به نوبه خود تدابیری برای جلوگیری از این دسته از ایمیل ها اندیشیده اند.
به عنوان مثال تمام میل سرور ها ایمیل های ورودی از یک IP را یا Block و یا به قسمت Spam هدایت میکنند. پس دیگر نصب یک میل سرور local و ارسال ایمیل عملا بی معنی و بلا استفاده در شبکه اینترنت است.
بعد از مدتی متقلبان دیگری با استفاده از نام دامین های دیگر اقدام به ارسال هرزنامه میکردند که برای جلوگیری از این مسئله نیز تدابیری اندیشه شد که میتوان به تنظیمات DNS Server اشاره کرد.
البته نکته قابل اشاره این مسئله هست که در ابتدای راه اندازی میل سرور ایمیل های شما بدرستی به مقصد خواهد رسید ولی بعد از مدتی سخت گیری ها آغاز خواهد شد و در صورتی که اطلاعی از مسئله تنظیمات DNS نداشته باشید کاملا سر در گم خواهید شد.
اینگونه سخت گیری ها برای میل سرور ها روش های مختلفی دارد که ما در این مقاله به 3 میل سرور بزرگ و محبوب اشاره خواهیم داشت که شما با پوشش صحیح این 3 میل سرور میتوانید مطمئن باشید که میل سرور شما با تمام میل سرور های دیگر سازگار خواهد بود.

live.com : نیاز به تنظیمات صحیح و کامل DNS دارد.
gmail.com : نیاز به ست کردن SPF Record در DNS Server دارد.
yahoo.com : علاوه بر تمام موارد بالا نیاز به Domainkey و DKIM دارد.
("در صورتی که با ست کردن صحیح این گزینه ها باز هم نامه های ارسالی از میل سرور شما به قسمت Spam رفت نیاز به مکاتبه با مسئولین **** دارید که مفصلا شرح داده خواهد شد.")

hamed_p
20th May 2013, 14:55
بخش چهارم : live.com تنظیمات کامل و صحیح DNS Server




هر دامنه ای حداقل داراه 1 DNS میباشد به عنوان مثال برای دامنه ما که با نام mydomain.com میشناسیم ns1.mydomain.com وجود دارد و همچنین برای هر دامین یک ایمیل postmaster یا hostmaster تعریف شذه است که باید در SOA Record تعریف شده باشد.
توجه کنید که در هنگام ایجاد دامین در Qmail اکانت Postmaster ایجاد خواهد شد.

پس داریم :

کد:
کد PHP:

@ IN SOA ns1.mydomain.com. postmaster.mydomain.com. (
2003080800 ; sn = serial number
172800 ; ref = refresh = 2d
900 ; ret = update retry = 15m
1209600 ; ex = expiry = 2w
3600 ; min = minimum = 1h
)


در مرحله بعد نیاز به NS Record دارم تا نام DNS خود را برای DNS Server تعریف کرده باشیم، پس داریم:

کد:
کد PHP:

@ IN NS ns1.mydomain.com.


در مرحله بعد نیاز داریم تا هرکدام از NS هایی که تعریف کرده ایم را توسط A Record هاست کنیمهمچنین postmaster یا hostmaster که در رکورد SOA تعریف شده اند نیز باید هاست شده باشند.پس داریم :
کد:
کد PHP:

ns1 IN A <ipaddress>
hostmaster IN A <ipaddress>


در مرحله بعد نیاز داریم که میل سرور خود را نیز هاست کنیم و رکورد MX که در اصل راهنمایی برای دیگر میل سرور ها برای پیدا کردن میل سرور در ip شما هست اضافه کنیم.پس داریم:
کد:
کد PHP:

mail IN A <mailserverip>
@ IN MX 10 mail.mydomain.com.


در مرحله بعدی نیاز به PTR Record n دارید که اشاره گری از ip شما به نام رکورد A برای میل سرور هست. پس در zone مربوط به دامنه داریم:
کد:
کد PHP:

x.x.x.n IN PTR mail.mydomain.com.


و در zone برای in-addr.arpa داریم:
کد:
کد PHP:

$ORIGIN x.x.x.IN-ADDR.ARPA.
@ IN SOA ns1.mydomain.com. postmaster.mydomain.com. (
2003080800 ; sn = serial number
172800 ; ref = refresh = 2d
900 ; ret = update retry = 15m
1209600 ; ex = expiry = 2w
3600 ; min = minimum = 1h
)
IN NS ns1.mydomain.com.

n IN PTR mail.mydomain.com.


توجه! در مثال بالا منظور از x.x.x آدرس network و منظور از n شماره هاست میباشد.


حال DNS Server خود را update کنید و دامین خود را با
http://www.dnscheck.se (http://www.dnscheck.se/)
و یا دیگر ابزار های کنترل DNS چک کنید و تا جایی پیش بروید که هیچگونه ایرادی در DNS سرور شما شناسایی نشود.("در این سایت ایراد ها به رنگ قرمز نشان داده خواهد شد.")
همچنین برای تست کردن ptr record از ابزار موجود در :
Advanced DNS Management - Easy, web-based domain manager - ZoneEdit.com (http://www.zoneedit.com/lookup.html)

و برای تست mx record از ابزار موجود در
http://www.mxtoolbox.com (http://www.mxtoolbox.com/)
استفاده کنید.


خسته نباشید!اکنون ایمیل های شما در live.com به خوبی دریافت خواهند شد.

پایان بخش چهارم

hamed_p
20th May 2013, 14:56
بخش پنجم : gmail.com و افزودن SPF Record




در gmail شما نیاز دارید که علاوه بر رعایت سلامت DNS Server خود که در بخش قبلی به آن اشاره شد IP میل سرور خود را در DNS Server مربوط به دامین ارسال کننده را اهراز هویت کنید که این کار توسط یک TXT Record با محتوی spf انجام میشود.
بدین منظور میبایست این رکورد به zone مربوط اضافه شود.

کد:

mydomain.com. IN TXT "v=spf1 ptr:mail.mydomain.com mx:mail.mydomain.com ip4:<SMTP-ip Address> ~all"


به منظور افزودن و یا تغییرات دلخواه میتوانید از ابزار wizard در آدرس
http://openspf.org (http://openspf.org/)
استفاده کنید.
همچنین به منظور تست spf میتوانید از ابزار
SPF Query Tool (http://www.kitterman.com/spf/validate.html)
یا ابزار هایی همانند nslookup یا dig استفاده کنید.

راه دریافت ایمیل های شما برای کاربران gmail.com هموار است. :)

پایان بخش پنجم

hamed_p
20th May 2013, 14:57
بخش ششم : yahoo.com


قسمت اول Domainkey




در yahoo علاوه بر تنظیمات صحیح DNS Server و همچنین SPF Record نیاز به Domainkey نیز وجود دارد.


Domainkey چیست؟
یکی از ابداعات **** برای جلوگیری از Spam و اهراز هویت دامین ارسال کننده توسط یک جفت کلید ssl که کلید Private در سرایند ایمیل ارسال میشود و کلید Public در DNS Server قرار میگیرد و بدین وسیله **** از هویت ارسال کننده نامه اطمینان پیدا میکند.
در ایمیل هایی که ارسال کننده آن دارای Domainkey معتبر باشند به صورت پیش فرض توسط **** به کاربر اعلام میگردد.






روش نصب و ایجاد Domainkey برای دامین فرضی mydomain.com:


مرحله اول ایجاد Folder برای Key :
کد:
cd /var/qmail/control/domainkeys
mkdir mydomain.com
مرحله دوم ساخت جفت کلید Private و Public :


کد:
cd mydomain.com
dknewkey private > public.txt
بعد از اجرای دستور بالا در داخل پوشه mydomain.com دو فایل با نامهای private و public.txt ایجاد خواهد شد.
نا گفته نماند که انتخاب نام برای این 2 فایل به صورت اختیاری میباشد، محتوای فایل public.txt حاوی تنظیمات DNS میباشد که به صورت کلید عمومی در DNS سرور قرار میگیرد به عنوان مثال :
کد:
private._domainkey IN TXT "k=rsa; p=MEwwDQYJKoZIhvcNAQEBBQADOwAwOAIxAN6Go..."




توجه قسمت قرمز رنگ در مثال بالا همان کلید عمومی میباشد که با پارامتر p مشخص شده و پارامتر k نشان دهنده نوع کلید میباشد.


و فایل private شامل کلید عمومی که توسط qmail به header هر ایمیل ارسالی الحاق خواهد شد.توجه کنید که انتخاب نام برای این فایل لازم به توجه بیشتری است زیرا همین نام باید در DNS نیز تعریف گردد.




حال میبایست پرمیشن های لازم برای پوشه و دو فایل مذکور تعیین گردد، بدین منظور از دستورات زیر استفاده خواهیم کرد :


کد:
کد PHP:
chmod 440 private
cd ..


chown -R root:vchkpw mydomain.com
تنظیمات DNS برای Domainkey :


گام اول در تنظیمات DNS Server ایجاد یک TXT Record با نام پیش فرض domainkey_ میباشد که به شرح زیر است :
کد:
_domainkey.your-domain.com. IN TXT "t=y; o=-; r=postmaster@mydomain.com"
توجه کنید که t=y به این معنی است که این Record در حال تست میباشد و با استفاده از ابزارهایی که تعریف خواهد شد میتوانید DNS Server خود را برای Domainkey تست کنید و در پایان راه اندازی میتوانید t=y را حذف کنید.


گام دوم ایجاد یک TXT Record برای کلید عمومی که در حقیقت همان محتوای public.txt میباشد :


کد:
کد PHP:
private._domainkey IN TXT "k=rsa; p=MEwwDQYJKoZIhvcNAQEBBQADOwAwOAIxAN6Go..."
توجه برای private._domainkey :
همانطور که مشاهده کردید این رکورد با نام private در زیر مجموعه domainkey_ نام گذاری شده است که در حقیقت private همان نامی است که هنگام ایجاد کلید توسط شما انتخاب شده!
هنگامی که qmail کلید private را به سرآیند ایمیل الحاق میکند نام فایل کلید خصوصی نیز برای yahoo ارسال میشود و yahoo با استفاده از آن نام در زیر مجموعه domainkey_ از دامین شما به دنبال کلید خصوصی خواهد گشت.پس دقت کنید که این نام و نام فایل کلید خصوصی باید یکسان باشد.


بعد از به روز رسانی DNS Server میتوانید از طریق دو آدرس زیر Domainkey خود را تست کنید :
http://domainkeys.sourceforge.net/policycheck.html


http://domainkeys.sourceforge.net/selectorcheck.html


پ.و : در قسمت بعدی، آموزش روش تنظیمات tcp.rules برای الحاق کلید خصوصی به سرآیند ایمیل ها توضیح داده خواهد شد.


پایان بخش ششم