PDA

View Full Version : مقاله: نصب و راه اندازی یک Mail Server کامل با qmail



raravaice
یک شنبه 13 اردیبهشت 1388, 15:43 عصر
موضوع : نصب و راه اندازی کامل یک 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 ایجاد شده.
میتوانید مطالب بیشتر را در آدرس :http://antispam.yahoo.com/domainkeys که یک پروژه opensource از یاهو در http://domainkeys.sourceforge.net میباشد پیگیری کنید.

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


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


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



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


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



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



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 سرویس های غیر ضروری و استارت سرویس های ضروری.



chkconfig httpd on
service httpd start

chkconfig mysqld on
service mysqld start

chkconfig ntpd on
service ntpd start

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



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

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



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



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



ln -s /usr/include/et/com_err.h /usr/include/com_err.h
مرحله 9 : به روز رسانی مخزن yum


yum -y updateمرحله 10: ریبوت سیستم


reboot
نصب Qmail :

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


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


مرحله 2: نصب پکیجها



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


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: نصب پکیجهای مورد نیاز



yum -y install bind bind-chroot bind-devel bind-libbind-devel bind-libs bind-utils ypbind caching-nameserver
مرحله 2: تنظیم DNS Server داخلی



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

echo "nameserver 127.0.0.1" >> /etc/resolv.conf
مرحله 3: Start Up Dns Server


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



reboot

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



qmailctl stat

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


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



پایان فسمت اول

raravaice
یک شنبه 13 اردیبهشت 1388, 20:23 عصر
بخش دوم : افزودن Domain و User و تنظیمات webmail و مدیریت web

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

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


/home/vpopmail/bin/vadddomain mydomain.com <postmaster-password>
توجه کنید : برای هر دامین که افزوده میشود یک آدرس با نام postmaster ایجاد میگردد که password آن به جای <postmaster-password> قرار میگیرد.

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


/home/vpopmail/bin/vadduser info@mydomain.com <email-password>
تنظیمات Web Interface :
ابتدا php.ini را واقع در etc ویراش میکنیم و register_globals را برابر با On قرار میدهیم سپس سرویس httpd را رستارت میکنیم.


vi /etc/php.ini

#Now Set
register_globals = On
#Now
service httpd restart
حال میتوانید interface خود را در آدرس http://mydomain.com/admin-toaster مشاهده کنید.
نام کاربری : admin
پسورد پیش فرض : toaster

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

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



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


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


پایان بخش دوم

raravaice
یک شنبه 13 اردیبهشت 1388, 21:53 عصر
بخش سوم : توضیحاتی در مورد تنظیمات 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 رفت نیاز به مکاتبه با مسئولین یاهو دارید که مفصلا شرح داده خواهد شد.")

پایان بخش سوم

raravaice
یک شنبه 13 اردیبهشت 1388, 21:58 عصر
بخش چهارم : live.com تنظیمات کامل و صحیح DNS Server


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

پس داریم :



@ 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 تعریف کرده باشیم، پس داریم:



@ IN NS ns1.mydomain.com.

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


ns1 IN A <ipaddress>
hostmaster IN A <ipaddress>
در مرحله بعد نیاز داریم که میل سرور خود را نیز هاست کنیم و رکورد MX که در اصل راهنمایی برای دیگر میل سرور ها برای پیدا کردن میل سرور در ip شما هست اضافه کنیم.پس داریم:


mail IN A <mailserverip>
@ IN MX 10 mail.mydomain.com.
در مرحله بعدی نیاز به PTR Record n دارید که اشاره گری از ip شما به نام رکورد A برای میل سرور هست. پس در zone مربوط به دامنه داریم:


x.x.x.n IN PTR mail.mydomain.com.
و در zone برای in-addr.arpa داریم:


$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 و یا دیگر ابزار های کنترل DNS چک کنید و تا جایی پیش بروید که هیچگونه ایرادی در DNS سرور شما شناسایی نشود.("در این سایت ایراد ها به رنگ قرمز نشان داده خواهد شد.")
همچنین برای تست کردن ptr record از ابزار موجود در :
http://www.zoneedit.com/lookup.html
و برای تست mx record از ابزار موجود در http://www.mxtoolbox.com استفاده کنید.


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

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

raravaice
یک شنبه 13 اردیبهشت 1388, 22:17 عصر
بخش پنجم : 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 استفاده کنید.
همچنین به منظور تست spf میتوانید از ابزار http://www.kitterman.com/spf/validate.html یا ابزار هایی همانند nslookup یا dig استفاده کنید.

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

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

raravaice
شنبه 19 اردیبهشت 1388, 22:11 عصر
بخش ششم : yahoo.com


قسمت اول Domainkey


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

Domainkey چیست؟
یکی از ابداعات یاهو برای جلوگیری از Spam و اهراز هویت دامین ارسال کننده توسط یک جفت کلید ssl که کلید Private در سرایند ایمیل ارسال میشود و کلید Public در DNS Server قرار میگیرد و بدین وسیله یاهو از هویت ارسال کننده نامه اطمینان پیدا میکند.
در ایمیل هایی که ارسال کننده آن دارای Domainkey معتبر باشند به صورت پیش فرض توسط یاهو به کاربر اعلام میگردد.
http://s1.xvay.net/?p=222529df8b00cc5a69660868eb9d2a8e


روش نصب و ایجاد 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 نیز تعریف گردد.


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



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 میباشد :



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 برای الحاق کلید خصوصی به سرآیند ایمیل ها توضیح داده خواهد شد.

پایان بخش ششم

barnamenevisforme
چهارشنبه 18 اردیبهشت 1392, 14:17 عصر
سلام دوست عزیز
شما در مورد نصب qmail در ابونتا(لينوكس) اطلاعی دارید؟
تو اجراي اسكريپتش ارور permissiom denied ميده...نميدونم چيكارش كنم...از دستور sudo و cu و echo -x و هم استفاده كردم اما نتيجه نداد.