سوال: چگونه یک سرور ایمیل راه اندازی کنیم؟

این سوالی است که مدتی ذهنمو به خودش مشغول کرده بود. با جستجو در اینترنت و خواندن چندین مقاله و مهمتر از اون، تجربه کار با چند نرم افزار و کمی هم برنامه نویسی توانستم به سوال بالا پاسخ مطلوب بدهم. در ابتدا باید مشخص شود سرور ایمیل چیست؟ به طور خلاصه می توان گفت سرور ایمیل، سروری است که وظیفه خدمت رسانی جهت دریافت و ارسال و مدیریت ایمیل ها را برای کاربران خود به عهده دارد.

برای مثال می توان به سایت ایمیل یاهو، جیمیل، چاپار میل و ... اشاره کرد که کاربر ابتدا در این سایتها ثبت نام می کند و سپس با نام کاربری و کلمه عبور خود وارد فضای مدیریت ایمیل خود شده و قادر به دریافت و ارسال و مدیریت ایمیل های خود می باشد. این گونه سایتها روی سرورهایی پیاده سازی شده اند که به سرور ایمیل معروفند و وظایف مشخص شده جهت مدیریت ایمیل ها را برای کابران خود از طریق مرورگر اینترنتی یا نرم افزارهای مدیریت ایمیل مانند outlook، thunderbird و ... انجام می دهد. در ادامه مقاله می توانید با مراحل راه اندازی یک سرور ایمیل آشنا شوید. تجربه شخصی بنده راه اندازی سرور ایمیل روی کامپیوتر شخصی به صورت لوکال هاست با سیستم عامل ویندوز می باشد. مثال عملی از هر مرحله را با توجه به کامپیوتر خودم توضیح می دهم. البته مراحل راه اندازی سرور ایمیل روی یک سرور متصل به اینترنت شبیه به لوکال هاست می باشد. قبل از ادامه آموزش لازم است کمی در مورد سرورها، سیستم عامل ها و زبان های برنامه نویسی تحت وب مانند php و html و نیز بانکهای اطلاعاتی مانند mysql اطلاعات داشته باشید تا بتوانید کدها را در صورت لزوم تحلیل کرده و تغییر دهید.

برای راه اندازی یک سرور ایمیل به دو نرم افزار اصلی نیاز دارید. یکی نرم افزار میل سرور و دیگری نرم افزار وب میل. نرم افزار میل سرور به طور خلاصه وظیفه ارسال و دریافت و ذخیره و حذف و مدیریت ایمیلها و نیز مدیریت پوشه ها را بر عهده دارد. بعضی از این وظایف از طریق تراکنش با دیتابیس به انجام می رسد و بعضی دیگر از طریق کار با فایلها روی سرور. مثلا مدیریت ورود و خروج کاربر، مدیریت پوشه های Inbox، Sent و دیگر پوشه ها، آدرس ذخیره ایمیلها، مشخصات کاربر، اطلاعات مربوط به دامنه ها و ... اغلب در دیتابیس سرور انجام می شود و محتویات ایمیل ها و فایلهای الحاقی آنها اغلب در پوشه مخصوص کاربر در سرور نگهداری و مدیریت می شود. البته این دسته بندی اطلاعات همیشه برای همه نرم افزارهای میل سرور ممکن است اینگونه نباشد و نرم افزارها در بعضی موارد با هم اختلاف داشته باشند.
نرم افزار وب میل به طور خلاصه وظیفه ارتباط کاربر با حساب کاربری خود در میل سرور را از طریق مرورگر اینترنتی کاربر انجام می دهد.
برای راه اندازی یک سرور ایمیل، ابتدا باید نرم افزار میل سرو را نصب و تنظیم کنیم و بعد نرم افزار وب میل را نصب و متناسب با نرم افزار میل سرور تنظیم کنیم. با انجام مراحل زیر این نرم افزارها را نصب و تنظیم می کنیم. اطلاعات ارائه شده در حالت کلی می باشد که هر مرحله با یک مثال خاص روشن تر شده است. پیشنهاد بنده برای انجام مراحل ذیل این است که ابتدا مراحل را روی رایانه ای غیر از رایانه سرور انجام دهید و پس از کسب تجربه لازم روی سرور مورد نظر پیاده سازی کنید.

بخش اول: نصب نرم افزار میل سرور

1- ابتدا بايد يک سرور مناسب برای این کار در نظر بگیرید. می توانید خودتان یک سرور خریداری کنید که خیلی مفید خواهد بود اما هزینه خرید و نگهداری آن بالا است و یا می توانید سرور مجازی از یکی از ارائه دهندگان خدمات سرور و هاست خریداری کنید که به صرفه تر است اما محدودیت هایی هم دارد. خلاصه انتخاب سرور با توجه به نیازتان و شرایط مالی تان خواهد بود. سیستم عامل سرور مورد نظر می تواند یکی از توزیع های لینوکس ،مانند Centos یا اوبونتو یا ...، یا از سری ویندوز مانند ویندوز سرور، و یا از خانواده یونیکس مانند freebsd یا openbsd باشد. تنها نکته مدنظر در انتخاب سیستم عامل سرور این است که قابلیت پشتیبانی از زبان برنامه نویسی php یا asp و نیز حداقل یک بانک طلاعاتی مانند mysql یا mssql یا ... را داشته باشد. پیشنهاد متخصصین این حوزه ، سروری با سیستم عامل Centos است. سیستم عامل رایانه بنده برای تجربه مراحل راه اندازی سرور ایمیل، ویندوز 7 است که البته برای یک سرور واقعی پیشنهاد نمی شود!

2- بعد از انتخاب سرور و نصب سیستم عامل روی آن، لازم است نرم افزار وب سرور با توجه به سیستم عامل تان روی آن نصب شود. وب سرور آپاچی، nginx، lightspeed و IIS از معروفترین و بهترینهای دنیا هستند. بعد از نصب وب سرور، لازم است زبان برنامه نویسی و بانک اطلاعاتی متناسب، مانند php و mysql برای لینوکس، و asp و mssql برای ویندوز نصب شود.

روی رایانه بنده نرم افزار Wampserver نصب شده است که شامل وب سرور آپاچی به همراه php و mysql است.


روش انجام مراحل اول و دوم را به راحتی می توانید در اینترنت به دست آورید. توضیح آنها خارج از حوصله این مقاله است.

3- حال نوبت به نصب نرم افزار میل سرور می رسد. می توانید لیستی از این میل سرورها را در ویکی پدیا پیدا کنید که تعدادی از آنها رایگان و تعدادی پولی هستند. البته این لیست کامل نیست و موارد مناسب دیگری هم هست که در این لیست نیامده است. این گونه نرم افزارها مانند نرم افزار وب سرور باید همیشه در حال اجرا باشد تا بتواند به درخواستهای کاربران مانند دریافت و ارسال ایمیل به راحتی پاسخ کامل بدهد. این نرم افزارها اغلب به عنوان یک سرویس روی سیستم عامل نصب می شوند.
پیشنهاد بنده برای سیستم عامل لینوکس نرم افزار رایگان و منبع باز iredmail، و برای سیستم عامل ویندوز نرم افزار رایگان و منبع باز hmail server است. نکته مهم در نصب این برنامه ها این است که برای افزایش توانایی در مدیریت سرور ایمیل، حتما بانک اطلاعاتی خارجی را برای نرم افزار انتخاب کنید. زیرا بعضی از این نرم افزارها  بانک اطلاعاتی داخلی هم دارند اما برای تعداد کاربران زیاد و نیز مدیریت سرور ایمیل مناسب نیست.

بنده نرم افزار hmail server را روی رایانه ام نصب کردم. هنگام نصب برنامه در مرحله ای از کاربر انتخاب نوع بانک اطلاعاتی سوال می شود که لازم است گزینه "use external database engine..." انتخاب شود(البته اگر اشتباه انتخاب کردید نگران نباشید. می توانید پس از نصب نرم افزار در پوشه نصب نرم افزار فایل hMailServer.INI را با notepad باز کرده و مقادیر آن را به این گزینه ها،Type=MYSQL و Internal=0 تغییر داده ، فایل DBSetup.exe را اجرا کنید و بانک اطلاعاتی مناسب را با توجه به اطلاعات سرور انتخاب کرده و با ارائه اطلاعات مناسب، بانک اطلاعاتی خارجی خود را به نرم افزار متصل کنید.)

4- پس از نصب و اجرای نرم افزار، باید در گام اول اطلاعات میل سرور مانند آی پی، نام دامنه، فضای تخصیص داده شده برای سرور، تنظیمات مربوط به پروتکل های IMAP، POP3 SMTP را در نرم افزار وارد کنید. بیشتر مواقع آدرس localhost برای آدرسها کفایت میکند. البته می توانید برای اطلاع از تنظیمات موردنظر، راهنمایی های نصب و تنظیم نرم افزار را در سایت سازنده آن ببینید.

مثلا در نرم افزار hmail server با انتخاب گزینه ...Add Domain در صفحه خوشامدگویی، آدرس سرور ایمیل را وارد می کنیم، مانند تصویر زیر

بهتر است حتما گزینه های دیگر مانند Limits را بررسی کنید و تنظیمات لازم را اعمال کنید.

5- پس از انجام مراحل بالا سرور ایمیل شما آماده خدمت رسانی به کاربران است. البته برای استفاده کاربران، باید برای هر کدام از آنها به صورت جداگانه حساب کاربری که شامل نام کاربری یا همان آدرس ایمیل به صورت user@yourdomaim.com، کلمه عبور، فضای تخصیصی برای کاربر و اطلاعات دیگر مانند نام و نام خانوادگی، پوشه های اولیه مانند Inbox و ... است را وارد کنید. پیشنهاد بنده این است که تا جای ممکن گزینه های مربوط به هر کاربر را به طور کامل وارد کنید تا مدیریت کاربران در آینده برایتان راحت تر باشد. البته این مرحله خسته کننده است زیرا برای هر کاربر باید خودتان به عنوان مدیر سرور این کار را انجام دهید. در مراحل بعدی روش حل مسئله این ارائه خواهد شد. پس از ساخت حساب کاربری، کافیست به کاربرانتان آدرس ایمیل، کلمه عبور، آدرس سرور IMAP و SMTP و POP3 را ارائه دهید تا از طریق نرم افزارهای مدیریت ایمیل مانند outlook و thunderbird به حساب ایمیل خود دسترسی داشته باشند.

در نرم افزار hmail server پس از اضافه کردن دامنه مورد نظر گزینه ای به نام دامنه ساخته شده زیر گزینه Domains ایجاد خواهد شد که شامل سه گزینه Accounts،Aliases و Distribution lists است. برای اضافه کردن حساب کاربری کافیست از قسمت Accounts اقدام کنید.

 


تا اینجای کار مرحله راه اندازی سرور ایمیل به انتها رسیده است. اما دو مسئله باقی مانده است. مسئله اول اینکه اگر کاربری بخواهد بدون استفاده از نرم افزارهای مدیریت ایمیل و تنها از طریق مرورگر اینترنتی، ایمیل خود را باز کند چه باید بکند؟ مسئله دوم اینکه چگونه کاربران می توانند خودشان حساب کاربری خود را ایجاد کنند؟
در ادامه مقاله به هر دو سوال پاسخ داده خواهد شد. ادامه مراحل را دنبال کنید.


بخش دوم: نصب نرم افزار وب میل

1- نرم افزار وب میل نرم افزاری است که کاربر با وارد شدن به آدرس ورودی ایمیل، مثلا ymail.com، و وارد کردن نام کاربری و کلمه عبور وارد آن می شود که شامل دو یا سه ستون است. یکی از ستون ها شامل Inbox یا صندوق ورودی، Sent یا ارسال شده و ... است و ستون دیگر لیستی از ایمیلهای کاربر است که با کلیک بر روی هرکدام از آنها ایمیل مورد نظر باز می شود. به عبارت دیگر نرم افزار وب میل همان چیزی است که کاربر می گوید از طریق مرورگر اینترنتی وارد ایمیلم شده ام. این گونه نرم افزارها عموما به زبانهای php یا asp نوشته شده اند و شامل نرم افزارهای رایگان و پولی هستند. یکی از بهترین این نرم افزارها که البته رایگان و منبع باز است نرم افزار Roundcube webmail است. این نرم افزار به زبان php نوشته شده و قابلیت برقراری ارتباط با نرم افزارهای میل سرور را دارد و نیز توانایی های زیادی در زمینه مدیریت ایمیل در اختیار کاربر قرار می دهد. مراحل نصب این گونه نرم افزارها اغلب شبیه هم هستند و در کلیات مشترکند. بنابراین این نرم افزار را توضیح میدهم و دیگر نرم افزارها را شبیه این نرم افزار نصب و استفاده کنید.

2- پس از مراجعه به سایت Roundcube webmail و ورود به صفحه دانلود، چند نوع توزیع از نرم افزار برای دانلود وجود دارد که پیشنهاد می شود نسخه Complete را دانلود کنید.

پس از دانلود، محتویات فایل را در پوشه مربوط به هاست وب سرور خود آپلود کنید. سپس یک بانک اطلاعاتی و یک نام کاربری و کلمه عبور متناسب با بانک اطلاعاتی برای نرم افزار ایجاد کنید. بعد در مرورگر اینترنتی خود به آدرس http://url-to-roundcube/installer بروید. البته منظور آدرس پوشه برنامه است که در انتهای آن کلمه installer/ آمده است. مراحل نصب را که شامل وارد نمودن اطلاعات سرور ایمیل، آدرس سایت پشتیبان، تنظیمات پروتکلهای IMAP، POP3 و SMTP و ... است دنبال کنید. اگر مراحل را به درستی پیش بروید نرم افزار Roundcube webmail به طور کامل نصب می شود.  پس از اتمام نصب، پوشه installer را حذف کنید. اگر بعد از نصب به مشکلی در تنظیمات برنامه برخوردید نگران نباشید. می توانید فایل config.inc.php در پوشه config را باز کرده و مطابق شرایط سرور خود ویرایش کنید.
یکی از قابلیت های مفید این نرم افزار، وجود پلاگین های مفیدی است که در پوشه plugins وجود دارد. مثلا پلاگین password پلاگینی است که به وسیله آن می توانید قابلیت تغییر کلمه عبور ایمیل را برای کاربرانتان فعال کنید. کافیست در این پوشه فایل config.inc.php را باز کرده و متناسب با نرم افزار میل سرورتان آن را ویرایش کنید. البته اطلاعات مفید این پلاگین در فایل README موجود است. اگر نرم افزار میل سرورتان در لیست نرم افزارهای پشتیبانی شده توسط این پلاگین نبود نگران نباشید. زیرا کافیست بدانید نرم افزار میل سرور با چه الگوریتمی کلمه عبور را رمز و ذخیره می کند. شما هم با استفاده از این پلاگین و کمی کد نویسی این کار را انجام دهید.

3- پس از اینکه نرم افزار وب میل به طور کامل نصب و تنظیم شد، کافیست در مرورگر خود آدرس وب میل را وارد کنید تا به  تصویری شبیه تصویر زیر برسید:

حال آدرس ایمیل خود را به همراه کلمه عبور وارد کنید تا به فضای مدیریتی ایمیل خود وارد شوید. مانند تصویر زیر:

تا اینجا به مسئله اول پاسخ داده شد. البته نرم افزارهای وب میل دیگری هم وجود دارند که با یک جستجوی ساده در اینترنت می توانید آنها را بیابید. لازم به ذکر است که اساس نصب و تنظیم و استفاده از نرم افزارهای وب میل بسیار شبیه به یکدیگر است که با تجربه یکی از آنها می توانید اطلاعات زیادی در مورد موارد به دست آورید.

4- مسئله دوم این بود که چگونه کاربران می توانند خودشان حساب کابری خود را ایجاد کنند؟ برای پاسخ به این سوال لازم است به موارد ذیل توجه کنید:

  • بررسی کنید برنامه میل سرور اطلاعات حسابهای کاربران را چگونه در بانک اطلاعاتی که در اختیارش گذاشته اید ذخیره کرده است. مثلا برنامه hmail server در بانک اطلاعاتی خارجی mysql که در اختیار دارد حساب کاربران خود را در جدولی به نام hm_accounts ذخیره کرده است که این جدول شامل 25 پارامتر است که یکی از آنها شمارنده خودکار است و بقیه اطلاعات کاربر. به عبارت دیگر برای هر کاربر به غیر از پارامتر شمارنده خودکار بقیه 24 پارامتر باید معین شود. چند تا از این پارامترها عبارتند از: accountdomainid (شماره دامنه ای که ایمیل کاربر روی آن دامنه تعریف شده است. شماره این دامنه ها در جدول hm_domains ذخیره شده است)، accountadminlevel (سطح کاربر است که برای کاربران عادی مقدار آن 0 است)، accountaddress (آدرس ایمیل کاربر است که به صورت گزینه ای یکتا یا Uniqe در بانک اطلاعاتی ذخیره می شود)، accountpassword (کلمه عبور رمزنگاری شده کاربر است که با الگوریتم هایی مثل md5، sha1، blowfish و ... رمز شده است.)، accountmaxsize (میزان فضای اختصاص داده شده به کاربر بر حسب مگابایت است). البته  پارامترهای دیگر هم مهمند اما پارامترهای اصلی همین موارد است.
  • دانستن روش رمز نگاری کلمه عبور بسیار مهم است. به خاطر مسائل امنیتی کلمه عبور به صورت صریح ذخیره نمی شود بلکه با استفاده از روش های رمزنگاری یک طرفه مانند md5، sha1، blowfish و ... ابتدا کلمه عبور به عبارت رمز شده ای که قابل برگشت نیست تبدیل می شود و عبارت رمز شده در بانک اطلاعاتی ذخیره می شود. اگر ندانیم کلمه عبور با چه الگوریتمی رمز می شود قادر به ذخیره کلمه عبور مورد نظر کاربر نیستیم. هنگامی که کاربر برای چک کردن ایمیل خود نام کاربری که همان آدرس ایمیل است و کلمه عبور را وارد فرم ورود می کند این اطلاعات برای میل سرور ارسال می شود و میل سرور کلمه عبور را ابتدا به صورت رمز شده درمی آورد و مقدار آن را با اطلاعات ثبت شده در بانک اطلاعاتی خود مقایسه می کند و اگر با هم مطابق بود به کاربر اجازه دسترسی به فضای ایمیل خود را می دهد و در غیر این صورت از این کار ممانعت به عمل می آورد. پس مشخص شد که دانستن الگوریتم رمزنگاری کلمه عبور بسیار حیاتی است. البته برنامه ای مانند hmail server هرچند الگوریتم خود را آشکار نمی کند اما می توان از طریق php در سیستم عامل ویندوز(و نه لینوکس) به برنامه hmail server به عنوان یک شی متصل شد و مستقیما از طریق خود برنامه کلمه عبور را به صورت رمز شده در بانک اطلاعاتی ذخیره کرد.
  • یکی دیگر از موارد مهم نحوه ذخیره پوشه های پیش فرض فضای ایمیل کاربر است. به عبارت دیگر بفهمیم که پوشه های Inbox،Sent، Trash،Drafts و Junk چگونه ذخیر شده است. مثلا در برنامه hmail server این پوشه ها به صورت واقعی ذخیره نمی شوند بلکه به صورت گزینه هایی در جدول hm_imapfolders ایجاد می شوند. به عبارت دیگر برای ساخت پوشه برای کاربر فقط باید در بانک اطلاعاتی آنها را ایجاد کرد. این پوشه ها به صورت واقعی در پوشه کاربر ذخیره نمی شود. برنامه hmail server برای هر کاربر یک پوشه در پوشه Data در محل نصب برنامه hmail server با نام کاربر می سازد و هر ایمیل را به صورت یک فایل با پسوند eml ذخیره می کند و نام فایل را به همراه پوشه مجازی در جدول hm_messages ذخیره می کند. بنابراین نتیجه می گیریم نحوه ذخیره ایمیل در سرور با نمایش محل قرار گیری آنها به کاربر با هم متفاوت است. آنچه مهم است دانستن روش مدیریت پوشه های مذکور است که اغلب در بانک اطلاعاتی ایجاد می شوند.

5- پس از بررسی موارد مورد اشاره در بند قبل، نوبت به ساختن فرم ثبت نام کاربران و ذخیره اطلاعات آنها در بانک اطلاعاتی میل سرور می رسد. برای ساخت این فرم، می توانید با استفاده از کد نویسی html یا با استفاده از نرم افزارهای طراحی صفحات وب، فرم مورد نظر را ایجاد کنید. این فرم حداقل باید شامل دو گزینه آدرس ایمیل و کلمه عبور باشد که کاربر این اطلاعات را در فرم وارد می کند و اطلاعات فرم با متد post به یک فایل php یا asp که کار ذخیره اطلاعات کاربر در بانک اطلاعاتی سرور را دارد ارسال می شود. البته این فرم می تواند شامل نام و نام خانوادگی کاربر و اطلاعات دیگر هم باشد. منتها ممکن است همه این اطلاعات را نتوان در جدول حسابهای کاربران در بانک اطلاعاتی ذخیره کرد و باید در جدول دیگری ذخیره کرد و دو جدول را با روشی به هم لینک دهیم.

6- در فایل php یا asp مربوط به ثبت نام کاربران، چند کار باید انجام شود. در گام اول باید کدهایی مربوط به اتصال به بانک اطلاعاتی مورد نظر را بنویسیم. سپس در صورت موفقیت به اتصال به بانک اطلاعاتی، اطلاعات کاربر را چک کنیم که مثلا آدرس ایمیل تکراری نباشد، طول و نوع کاراکترهای کلمه عبور مناسب باشد، فیلد کلمه عبور و تایید کلمه عبور مطابق باشند، فیلدهای ضروری و ستاره دار فرم ثبت نام حتما پر شده باشند و ... . البته تعدادی از این موارد را می توان با کدهای جاوا و آژاکس همان موقع که کاربر فرم ثبت نام را پر می کند بررسی کند تا فشار کمتری به سرور وارد شود.
پس از طی مراحل صحت اطلاعات فرم ورود و اتصال به بانک اطلاعاتی نوبت به ذخیره اطلاعات حساب کاربری کاربر می رسد. مثلا در php این کار با دستور mysqli و query انجام می شود. پس از ذخیره اطلاعات حساب کاربر حتما بررسی کنیم آیا کلمه عبور را به صورت صحیح، رمز و ذخیره کرده ایم. مثلا در hmail server نیازی نیست کلمه عبور را ابتدا رمز کنیم. بلکه می توان با عبارت رمز شده کلمه عبوری که قبلا به صورت دستی حساب کاربریش را در نرم افزار ساخته ایم و از بانک اطلاعاتی خوانده ایم حساب کاربری را بسازیم بعد با دستوراتی مشخص از hmail server بخواهیم کلمه عبور کاربر را مطابق همان چیزی که او در فرم ثبت نام وارد کرده تغییر دهیم. به این طریق الگوریتم رمز کردن کلمه عبور را دور زده ایم. البته این کار برای هر نرم افزار میل سروری ممکن است قابل اجرا نباشد بلکه باید به راهنمای نرم افزار در سایت سازنده آن مراجعه کرد و موارد مورد نظر را مطالعه نمود.
آخرین چیزی که باید برای حساب کاربر در بانک اطلاعاتی ایجاد کنیم پوشه های Inbox،Sent، Trash،Drafts و Junk است که با توجه به جدول نگهداری پوشه ها در بانک اطلاعاتی و استفاده از دستورات نوشتن در بانک اطلاعاتی همانند ثبت حساب کاربر، این پوشه را در جدول مذکور می نویسیم. اگر همه این موارد به صورت درست انجام شود حساب کاربر ثبت شده است و آماده استفاده است. موارد این بند را به صورت ساده در مورد hmail server انجام داده ام که می توانید در فایل پیوست آنها را مشاهده کنید. لازم به ذکر است که در کدهای پیوست، دستورات مربوط به چک کردن فیلدهای ثبت نام وجود ندارد، که این کار به راحتی قابل اجراست. مثلا در php با دستورات filter و type  و _is می توان به راحتی صحت اطلاعات ورودی را بررسی کرد.

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

لینک کمکی

تصاویر این تغییرات را در زیر می بینید:

پیروز و سربلند باشید.

استفاده از مطالب مقاله با ذکر منبع مجاز است.