تا چه حد میتوان به نرمافزار تولیدشده و بهروزرسانیشده خارجی برای نیل به هدف امنسازی خدمات پست الکترونیک ملی اعتماد کرد؟ چگونه میتوان برپایه این زبان متنی ذاتاً ناامن برای امنیت سامانه پست الکترونیک ملی نرمافزارنویسی کرد؟
سامانه پست الکترونیک ملی، چندی پیش به دست وزیر ارتباطات و فناوری اطلاعات افتتاح شد. هدف کلی مطرح شده برای ایجاد سامانه از جانب مقامات مسؤول تأمین امنیت ارتباطی ایمیل برای ایرانیان عنوان شده است که توجه به این موضوع قابل تقدیر است اما قبل از پذیرش و اقدام به استفاده از این پست الکترونیک باید دید که تا چه حد اهداف مطرح شده در این محصول محقق گردیده است. همچنین یک نکته لازم به ذکر قبل ارزیابی توانایی های سامانه حاضر این است که تأمین امنیت صد در صدی در هیچ سامانه ای چه الکترونیکی و چه غیر آن ممکن نیست و امنیت همیشه نسبی است.
بررسی کلی پست الکترونیکی ایران
آنچه که معمولا در نگاه اول به هر نوع خدمات اینترنتی توجه مصرف کننده را جلب می کند ساختار و امنیت نرم افزار تحت وب ارائه دهنده خدمات سامانه است.
از این نظر نرم افزار موجود بر روی سرویس غیر امن HTTP سوار است به راحتی امکان رصد اطلاعات منتقل شده بین کاربر و سامانه را به دیگران می دهد.
نوع نرم افزار پایه هم بر روی سرویس دهنده معروف آپاچی است که قابل نصب بر روی کلیه انواع سیستم های عامل معروف از BSD و Unix گرفته تا Windows و Linux را داراست.
همچنین با توجه به استفاده از نرم افزار Roundcube برای ارائه خدمات مدیریت پست الکترونیکی به نظر می رسد که حد اقل بخشی از این خدمات با استفاده از زبان متنی PHP برنامه ریزی شده است. همچنین ویرایش مورد استفاده از این نرم افزار بسیار قدیمی بوده و ملاحظات امنیتی جدید در آن اعمال نشده است.
اما با نگاهی به شبکه ارتباطی و IP های ارائه دهنده این سرویس به نظر می رسد که این شبکه Load Balanced بر روی تعدادی سرور در یک نقطه فیزیکی می باشد که خود از نظر امنیتی ملاحظاتی را در بر می گیرد.
با در نظر گرفتن به ملاحظات بالا توجه به نکات زیر ضروری می نماید:
1. از آنجا که پروتوکل HTTP ناامن است، هر نوع ارتباط گیری و وارد کردن مشخصات فردی در این سامانه که پیش نیاز استفاده از آن است، نا امن بوده و می تواند موجب معضلات بعدی گردد. لذا روش مرسوم HTTPS که گونه رمزگذاری شده و امنتر پروتکل HTTP است میتواند جایگزین بهتری برای تأمین امنیت بیشتر این سامانه باشد.
اما در صورت استفاده از روش HTTPS دانستن چگونگی تأمین امنیت ارتباطات حائز اهمیت است. در این نوع ارتباط بر اساس یک روش رمز گذاری مانند SSL – Secure Socket Layer یا TLS – Transport Layer Security هر سامانه یک جدول رمزگشای عمومی را به کاربر ارائه می دهد که خود با استفاده از یک رمز خصوصی ویژه مورد تأیید نرم افزار مرورگر کاربر امضا شده است. این جدول رمزگشا به کاربر اجازه میدهد که از این پس هر نوع اطلاعات رد و بدل شده ما بین کاربر و سامانه را بر اساس این کد رمزگشایی نماید. همچنین هر مرورگر به صورت داخلی دارای یک رمز داخلی است که با ارائه رمزگشای عمومی مربوطه به سامانه، امکان رمز گشایی معکوس اطلاعات کاربر را به سامانه می دهد.
اما نکته کلیدی در این نوع از ارتباط گیری مربوط به رمزهای خصوصی مورد تأیید مرورگرهای مورد استفاده است. این رمزهای خصوصی معمولا هنگام نصب نرم افزار سیستم عامل و نرم افزارهای مرورگر نصب و به روز رسانی می گردند. در بسیاری از سیستم های عامل نیز هر نرم افزار برای آنکه توسط سیستم عامل برای نصب مورد اعتماد واقع شود می بایست خود توسط رمز مخفی شرکت تولید کننده نرم افزار سیستم عامل یک امضای تأییدیه داشته باشد. این مسیر یک زنجیره از اعتمادسازی براساس اعتماد به یک عنصر بر اساس اعتماد به عنصر معرف را پدید می آورد.
از آنجا که ایران در حال حاضر تحت تحریم های بین المللی است که شامل بسیاری از خدمات الکترونیکی نیز می گردد، امکان ایجاد و دریافت امضای یک زوج رمز خصوصی و عمومی، و سپس دریافت امضای تأییدیه برای رمز عمومی برای ارائه به کاربر در سامانه یک موضوع غیر قابل اطمینان است.
برفرض هم که این کد رمز و جدول عمومی آن با امضای مربوطه قابل تأمین باشد، با توجه به تجربه تلخ ویروس استاکس نت که نفوذ آن بر اساس یکی از نرم افزارهای شرکت Real که در مجموعه رمزهای خصوصی مورد اعتماد محسوب میشد صورت پذیرفت، مشکل امنیتی کاملاً حل نمیشود.
همچنین در صورتی که این امضای تأیید صورت نپذیرد و بدون امضای تأیید این رمز ارائه گردد در واقع زنجیره اعتماد شکسته شده و خود یک حفره امنیتی می شود که از طریق آن یک خرابکار می تواند اقدام به راه اندازی سامانه کاملا مشابه سامانه پست الکترونیک ملی نماید و کارهای خرابکارانه مد نظر خود را به انجام رساند.
لذا مطمئنترین روش برای نیل به این موضوع آن است که سامانه به صورت فیزیکی اقدام به ارائه نرم افزار مرورگری نماید که مخصوص مرور سامانه پست الکترونیک ملی است و فقط رمز خصوصی ملی را پشتیبانی می نماید که در این صورت یک زنجیره موازی با زنجیره اعتماد خارجی ایجاد می گردد. بدیهی است موفقیت و یا عدم موفقیت این موضوع هم وابسته به نحوه ارتباط گیری و ارائه خدمات فیزیکی و پشتیبانی توسط سامانه پست الکترونیکی ملی و مقامات مسؤول است.
2. لازم به ذکر است که استفاده از نرم افزارهای غیر به روز رسانی شده خود یک حفره امنیتی می باشد. اما حتی در صورت به روز رسانی این سؤال مطرح می گردد تا چه حد می توان به نرم افزار تولید شده و به روز رسانی شده خارجی برای نیل به هدف امن سازی خدمات پست الکترونیک ملی اعتماد نمود؟
الف – در این راستا نرم افزارهایی مانند Roundcube، Squirrelmail، Horde و ... که وظیفه ارائه دسترسی به پست الکترونیک را بر روی شبکه وب بر عهده دارند به عنوان نرم افزارهای عمومی Open Source که توسط گروه های خارجی تولید و انتشار می یابند لازم به بررسی هستند.
اولا همگی این نرم افزارها به صورت غیر حرفه ای و توسط گروه های مختلف غیر متمرکز تولید می گردند. ثانیا برخی از آنها مانند Squirrelmail سابقه و کیفیت امنیتی بالاتری نسبت به بقیه دارند.
ب – زبان PHP یکی از پرطرفدار ترین زبان های متنی در میان برنامه نویسان از حرفه ای تا مبتدی است. علت اصلی این موضوع وجود کتابخانه های کد، صفحات پرش (Platforms) و اصلوب بندی های بسیار (Frameworks) به صورت اغلب مجانی بر روی این زبان می باشد. همچنین با زحمات چند شرکت مهم برنامه نویسی مانند Zend (صهیونیستی) و iOnCube این زبان دارای قابلیت های مهمی مانند اجرای چند لایه ای و رمزگذاری کد گردیده است. همچنین استفاده شرکت های بزرگی مانند Facebook، Yahoo، Wikipedia و ... از این نرم افزار برای ارائه خدمات وب باعث ایجاد احترام ویژه ای برای این زبان در میان شرکت های بزرگ خدمات دهنده وب شده است.
اما در حاضر رقبای بسیاری از زبان های متنی مانند Ruby، Python، Perl، و ... از زبانهای متنی و همچنین زبان های تبدیل به کد ماشین کننده و نسبتا قابل اعتمادی مانند C/C++، Ada، Haskell و ... برای زبان PHP موجود هستند که روز به روز به حجم کتابخانه های کد آنها افزوده می شود.
به عنوان مثال صفحه پرش Rails بر روی زبان Ruby و یا Django بر روی زبان Python رقبای جدی برای صفحات پرشی مانند Drupal و CodeIgniter بر روی زبان PHP هستند. همچنین زبان روبی به عنوان پیشتاز در ایجاد توانایی های برنامه نویسی سریع بر اساس روش رفتار محور Behavior-Driven Development توانسته بخش قابل توجهی از برنامه نویسان خوش ذوق را به خود جذب کند.
همچنین زبان های تبدیل به کد ماشین کننده به علت سرعت قابل توجه اجرا و سخت تر بودن دستیابی به کد اصلی در صورت دسترسی به نرم افزار برای خرابکارها در این رابطه قابل بررسی می باشند و می توان حد اقل بخش هایی از نرم افزارهای کاربردی مورد نیاز را با استفاده از این زبان ها ایجاد کرد.
نکته مهمی در این زمینه لازم به ذکر است که متأسفانه زبان های نیمه تبدیل به کد ماشین شونده مانند Java و خانواده .Net به صورت گسترده ای در میان برنامه نویسان داخلی محبوبیت یافته اند و گاهی با پیش فرض امنیت برای نوشتن برنامه های کاربردی امنیتی معرفی می شوند اما باید دانست که سوراخ های امنیتی بسیار مهمی در این نوع زبان ها وجود دارد و چند لایه بودن اجرا نیز کمک چندانی به این موضوع نمی کند لذا استفاده از این نوع زبان ها به جای زبان های کاملا تبدیل به کد ماشین کننده کاری اشتباه است.
هرچند هدف ما اینجا معرفی و بسط دانش نرم افزار نویسی نیست، لازم به توجه است که استفاده اولا نوشتن نرم افزار بر اساس زبان هایی غیر از PHP کاملا ممکن بوده و ثانیا این کار به امنیت نزدیک تر است.
استفاده از زبان برنامه نویسی متنی PHP (Scripting Language) به علت آنکه تولید بخش عمده ای از آن در اختیار رژیم صهیونیستی است علی رغم به ظاهر Open Source (کد باز) بودن یک تهدید جدی است. از آنجا که اولا معمولا استفاده کنندگان از این زبان به خود زحمت مطالعه و بررسی خط به خط پایه این زبان را نمی دهند و معمولا از ویرایش های Compiled (تبدیل به زبان ماشین شده آماده) که توسط شرکت ها بزرگ نرم افزاری استفاده می کنند، این سؤال مطرح است که چگونه می توان برپایه این زبان متنی ذاتا ناامن نرم افزار نویسی برای امنیت سامانه پست الکترونیک ملی نمود؟
همچنین به نظر می رسد استفاده نکردن از نرم افزارهای آماده و حداقل نوشتن از پایه نرم افزارهای کاربردی مورد استفاده برای سامانه پست الکترونیک به علت بسته بودن کد آن بر روی دیگران بتواند امنیت بیشتری برای استفاده کنندگان ایجاد نماید.
ج – استفاده از نرم افزارهای ارائه وب مانند Apache، Nginx، lighttpd و ... Open Source بوده و قابلیت تبدیل به زبان ماشین برای سیستم های عامل مختلف را دارا می باشند. در نگاه اول این نوع نرم افزارها به علت مجانی بودن، بازبودن کد و قابلیت دست کاری نرم افزار نویس از نرم افزارهای مشابه Closed Source مانند IIS، Oracle، IBM و ... جذاب تر است. اما باید گفت که بدون صرف هزینه های نسبتا بالا برای به کار گیری تعداد زیادی برنامه نویس به صورت دائمی برای پیگیری و مطالعه همه کد های نرم افزار و سپس تبدیل آنها به کد ماشین، عملا هیچ اطمینانی نسبت به بروز بودن امنیت این نرم افزارها در برابر تهدیدات هدفمند قدرت های جهانی وجود نخواهد داشت.
از طرف دیگر اگر بنا باشد که هر سازمان و مجموعه ای لزوما خود اقدام به نگارش و به روز رسانی همه نرم افزارهای مورد استفاده اش بپردازد اولا کارهای موازی زیاد شده و ثانیا هزینه های گزافی برای این موضوع هدر خواهد رفت. لذا به نظر می رسد ایجاد یک بستر نرم افزاری ملی توسط مقامات مسؤول و هدایت آن به سمت تولید و به روز رسانی نرم افزارهای پایه ای از این قبیل بتواند به عنوان گزینه برتر در این مسیر مورد توجه قرار گیرد.
عوامل مؤثر پشت صحنه در امنیت سامانه پست الکترونیک
هر چند اطلاعات چندانی از سیستم عامل، امنیت شبکه، دیوارهای امنیتی ارتباطی (Firewalls)، سخت افزارهای مورد استفاده و نحوه تأمین فیزیکی این مجموعه اطلاعات کافی موجود نیست بد نیست به عناصر مؤثر در این مهم توجهی داده شود.
همانگونه که در ابتدا گفته شد تأمین امنیت صد درصدی هیچگاه ممکن نیست. به طور کلی امنیت وابسته به چند عامل اصلی تهیه، نگهداری، شناسایی، انتقال، و دسترسی است که هرکدام در لایه های مختلف می بایست تأمین گردند.
الف – تهیه
عامل تهیه در سامانه پست الکترونیک در زمینه ایجاد و راه اندازی شبکه زیر ساختی، ارتباطات پایه، سخت افزارها و نرم افزارهای مورد استفاده، نیروهای کارآمد متخصص و ... باید مورد توجه به خصوصی واقع شود.
به عنوان نمونه شبکه زیر ساختی می بایست توان ارتباط گیری همزمان و از چند طریق را با شبکه های محلی و بخش های مختلف شبکه جهانی را دارا باشد. همچنین چنین شبکه ای می بایست توانایی مقابله با حملات رایانه ای از قبیل DDOS، Sniffing، Spoofing و ... دارا باشد و با استفاده از لایه های مختلف امنیتی جلوی نفوذ و سوء استفاده افراد مخلل و خرابکار را بگیرد. در این رابطه 8 لایه مورد توجه است که 7 لایه آن مربوط به مدل OSI (Physical, Data Link, Network, Transport, Session, Presentation, Application) و لایه هشتم لایه نیروی انسانی می باشد. لازم به ذکر است که در بسیاری از موارد بیشترین خطرات از طریق همین لایه هشتم متوجه سامانه ها می گردد که مربوط به خطای انسانی، نفوذ نیروهای خرابکار به لایه انسانی، و یا عدم توانایی کافی نیروهای فنی است.
نمونه دیگر این موضوع مربوط به استفاده از سخت افزارها و نرم افزارها است. متأسفانه در ایران استفاده از سخت افزارها و نرم افزارهای غیر کارشناسی بسیار متداول است. مثلا بارها دیده می شود که به جای استفاده از سخت افزارهای ویژه خدمات وب از رایانه های خانگی به اصطلاح تقویت شده استفاده می شود. یا اینکه از نرم افزاره های غیر اصیل (Non-Original) که توانایی به روز رسانی سریع و دقیق آنها در خطر است مورد استفاده قرار می گیرند. همچنین استفاده از سخت افزار و نرم افزاری که ذره ذره آن با دقت توسط متخصصین بررسی نشده باشد که خود می تواند به عنوان یک حفره جدی امنیتی مطرح گردد.
اما در مورد سخت افزار باید گفت که دو نوع نسل از سخت افزارها معمولا در بازار موجود است که یک نوع برای مصارف تجاری پایه و خانگی و نوع دیگر برای مصارف صنعتی و تجاری بزرگ مورد استفاده قرار می گیرند. به عنوان مثال شرکت Intel دارای دو تکنولوژی ICore و Xeon می باشد که اولی کاربرد خانگی و دیگری کاربرد صنعتی و دقیق دارد.
در بعد شبکه ارتباطی هم امروزه ارتباط گیری بین رایانه های یک شبکه با سرعتی بیش از 100 گیگا بیت بر ثانیه به راحتی بر روی فیبرهای نوری قابل اجراست. از آنجا هیچ رایانه ای به تنهایی توانایی انجام همه کارها را ندارد و در واقع همیشه یک مجموعه شبکه شده به یکدیگر به صورت گروهی اقدام به حل مسائل مورد نیاز می کنند، سرعت بالای دسترسی و شبکه بندی با برنامه ریزی دقیق ریاضی می تواند نقش مهمی در تأمین سرعت و کیفیت پردازش داده ها داشته باشد.
همچنین از آنجا که خدمات پست الکترونیک نیازمند حافظه قابل ملاحظه است و معمولا امروز حجم 2 گیگابایت حد اقل فضای مورد ارائه و مورد نیاز یک کاربر است، حجم بالایی از رایانه های شبکه شده به یکدیگر که نقش حافظه مجموعه را دارا می باشند مورد نیازند. در این راستا استفاده از فن آوری های Raid، SAS، SSD و ... از یک طرف و به کارگیری رایانه های مخزن (Cache Servers) می تواند مورد توجه قرار گیرد.
اما از بعد نرم افزاری نرم افزارهای ارائه خدمات گسترده پست الکترونیک بر روی سرورهای لینوکسی یا یونیکسی معمولا وابسته به استفاده از Postfix ، Qmail، Exim و ... به همراهی Dovecot، Courier، به همراه بانک های داده ای با استفاده از MySQL، Posgresql، Oracle SQL Server، و ... و یا بر روی سرورهای ویندوزی با استفاده از Outlook Server به همراه Microsoft SQL Server، Oracle SQL Server، IBM DB2 و ... صورت می پذیرد.
همچنین در کنار اینها استفاده از نرم افزارهای ویروس یاب، ضد مزاحمت، مدیریت داده و ... مانند Norton Antivirus، ClamAV، Amavis، Spamassassin و ... در جهت ارتقاء کیفی خدمات پست الکترونیک پیشنهاد می شود.
در بعد امنیت داده ذکر اینکه حیاتی است که امروزه به علت پیشرفت فن آوری رایانه بسیاری از روش های رمز گزاری قبلی دیگر امن نیست و استفاده از MD5، SHA512، SHA256 و سایر روش های قدیمی دیگر امنیت کافی ندارد. لذا استفاده از روش های رمز گزاری مانند SHA512-CRYPT، BCrypt، SCrypt و ... برای اطمینان از امنیت نسبی داده ها الزامی است.
ب – نگهداری
زیرساخت نگهداری از سخت افزار و نیروی فنی سامانه نیز در جایگاه ویژه ای قرار می گیرد. بدیهی است اگر این نگهداری به صورت دقیق طراحی، اجرا و مورد بازبینی مدون و دوره ای قرار نگیرد، حتی بهترین سامانه بعد از مدتی در خطر قرار گرفته و به سهولت تخریب خواهد شد.
به عنوان مثال تأمین برق همیشگی و استفاده از سخت افزارهای اصلاحگر نوسان و جایگزین در مواقع قطع برق، استفاده از اتاق های تمیز (Clean Rooms) که به صورت فنی گرد زدایی شده اند، استفاده از سیستم های تثبیت کننده دما، مراقبت ازعدم ورود حشرات و حیوانات موذی به محوطه و مسیرهای انتقال داده، اجرای پروتکل های امنیتی برای حفاظت از سامانه و نیروهای فنی و جلوگیری از لو رفتن اسرار کاری، تأمین منابع مالی مورد نیاز به موقع و توجه به نیازهای نیروهای فنی به منظور ایجاد و حفظ علاقه ادامه به کار و ... بخشی از دغدغه های مورد نظر در بحث نگهداری صحیح از زیرساخت و نیروهای فنی است.
ج – شناسایی
پروتکل های شناسایی معمولا نقش مهمی در امنیت یک مجموعه بازی می کنند. این پروتکل ها چه در بخش شناسایی فیزیکی و چه شناسایی الکترونیکی می توانند تعیین کننده موفقیت و یا شکست کل سامانه باشند.
به عنوان نمونه استفاده از کارت های رمزدار در کنار شناسایی با اثر انگشت و یا ساختار چشم، صدا و یا فیزیک بدن افراد در بخش فیزیکی و استفاده همزمان از روش های کد گزاری و شناسایی نرم افزاری مبتنی بر شبکه و سخت افزارهای رمز ساز یا رمز گشا مانند تجربه بانک ملی در استفاده از Token ها می تواند کمک به سزایی به امر شناسایی افراد بنماید.
همچنین در زمینه شناسایی رایانه ها و ساختارهای متصل به شبکه، استفاده همزمان ازساعت های ویژه هماهنگ شده، کدهای فیزیکی متغیر، استفاده از شبکه های چند لایه به صورت VPN یا Intranet، استفاده از سخت افزارهای کد کشا و کارت های دارای کد همانند روش های مورد استفاده در ارتباطات ماهواره ای و ... نمونه هایی از روش های قابل استفاده در امن سازی شناسایی بخش های مختلف سیستم به یکدیگرند.
د – انتقال
امنیت انتقال داده به همان اندازه تهیه و نگهداری آن حائز اهمیت است. لذا می بایست اولا با ایجاد و حفاظت از شبکه زیرساخت و لایه های مختلف هشت گانه ارتباطی نسبت به امنیت ارتباط، ثانیا با استفاده ازپروتکل های ارتباطی و شناسایی نسبت به اطمینان از صحیح بودن گیرنده اطلاعات، و ثالثا با به کار گیری نرم افزارها و سخت افزارهای امن نسبت به امنیت داده در مقصد مطمئن گردید.
ه – دسترسی
در صورت امن سازی بخش های قبلی در نهایت امن سازی دسترسی می تواند به عنوان تمام کننده چرخه امنیتی یک سامانه نقش مهمی را بازی کند. با درجه بندی و محدود سازی دسترسی بر اساس مکان جغرافیایی، شبکه مورد استفاده برای اتصال، شخص کاربر و ... می توان بخش عمده ای از دغدغه های امنیتی سامانه را پوشش داد.
مثلا با محدود کردن تغییر مشخصات فردی به استفاده از IP ایران، نفوذ افراد اخلالگر به سیستم به مراتب سخت تر می شود. یا با محدود کردن کارهای مدیریتی سامانه به شبکه داخلی Intranet سامانه که فقط در مکان های فیزیکی به خصوصی و پس از طی مراحل پروتکل های شناسایی قابل دسترسی می باشد، می توان جلوی دسترسی افراد خرابکار را به قلب سیستم تا حدود زیادی گرفت.
همچنین با محدود کردن دسترسی به بانک داده به یک شبکه Intranet مخصوص و با استفاده از یک API به جای دسترسی مستقیم به بانک داده می توان امنیت داده ها را بالا برد. یا با رمزگزاری کردن پوشه ها و شاخه های هر کاربر بر روی رایانه های نگهداری کننده از داده ها می توان دسترسی غیر مجاز به اطلاعات را تا حدود بالایی غیر ممکن نمود. به علاوه با تقسیم نحوه ارائه پوشه های ثابت و محل نگهداری آنها و پوشه های متغیر و پوشه های مربوط به نرم افزار کاربردی و تنظیم مناسب نوع برخورد سیستم عامل و نرم افزارهای لایه های زیرین با این پوشه ها می توان امنیت سامانه را تا حد قابل قبولی بالا برد.
در صورت نیاز به اطلاعات بیشتر در مورد مباحث مطرح شده در این مقاله می توانید به آدرس های ذیل مراجعه نمایید.
https://en.wikipedia.org/wiki/Transport_Layer_Security
https://fa.wikipedia.org/wiki/%D8%A7%D9%85%D9%86%DB%8C%D8%AA_%D9%84%D8%A7%DB%8C%D9%87_%D8%A7%D9%86%D8%AA%D9%82%D8%A7%D9%84
https://en.wikipedia.org/wiki/Open-source_software
http://en.wikipedia.org/wiki/Comparison_of_open_source_and_closed_source
http://www.noupe.com/ajax/10-ajax-webmail-clients.html
https://en.wikipedia.org/wiki/Webmail
https://en.wikipedia.org/wiki/Comparison_of_webmail_providers
http://en.wikipedia.org/wiki/List_of_programming_languages_by_type
http://www.php.net/manual/en/history.php.php
https://en.wikipedia.org/wiki/PHP
http://venturebeat.com/2012/10/02/php-andi-gutmans-future-mobile/
https://en.wikipedia.org/wiki/Programming_paradigm
http://ellislab.com/codeigniter
https://drupal.org/
http://rubyonrails.org/
https://www.djangoproject.com/
http://en.wikipedia.org/wiki/OSI_model
http://en.wikipedia.org/wiki/Comparison_of_web_server_software
http://www.apache.org/
http://nginx.org/
http://www.lighttpd.net/
http://www.iis.net/
http://www.oracle.com/technetwork/middleware/iplanetwebserver-098726.html
http://en.wikipedia.org/wiki/Bulk_email_software
https://en.wikipedia.org/wiki/Courier
http://www.courier-mta.org/
http://www.postfix.org/
http://en.wikipedia.org/wiki/Mail_server
http://en.wikipedia.org/wiki/Courier_Mail_Server
http://www.dovecot.org/
http://wiki2.dovecot.org/Authentication/PasswordSchem
منبع : مشرق