اطلاعیه

بستن
هنوز اطلاعیه ای در دست نیست.

آموزش نصب و راه اندازی میل سرور Postfix و Dovecot به همراه دیتابیس MariaDB

بستن
X
 
  • فیلتر کردن
  • زمان
  • نمایش
Clear All
پست های جدید

    آموزش نصب و راه اندازی میل سرور Postfix و Dovecot به همراه دیتابیس MariaDB

    در پست های زیر درباره نحوه نصب و راه اندازی میل سرور postfix به همراه antivirus و spam protection روی لینوکس centos بحث خواهیم کرد. لطفا دقت کنید این دستور العمل ها همچنین روی توزیع های دیگر همچون RHEL/Fedora و Debian/Ubuntu کار میکند.


    همچنین توصیه میشود مطالعه کنید.

    Part 1 : نصب و راه اندازی میل سرور Postfix و Dovecot به همراه دیتابیس MariaDB

    Part 2 : آموزش تنظیمات Postfix و Dovecot به همراه Virtual Domain Users در Linux

    Part 3 : نحوه افزودن Antivirus و Spam Protection به میل سرور Postfix با استفاده از ClamAV و SpamAssassin

    Part 4 : نحوه نصب و راه اندازی RoundCube (کلاینت وب میل) با Virtual Users در Postfix


    در این پست هدف ما ذخیره کردن اکانت های email و aliases در دیتابیس MariaDB میباشد که به منظور راحتی ما از طریق phpmyadmin مدیریت خواهد شد.

    اگر شما نمیخواهید phpmyadmin نصب کنید یا یک سروری که تنها شل دارد (only cli) روبه رو هستید ما همچنین کدهای مشابه را برای ایجاد جدول های دیتابیس برای شما فراهم آوردیم.

    از آنجایی که راه اندازی یک میل سرور و نگهداری آن یکی از تسک های مهم هر ادمین و مهندس شبکه میباشد همچنین یک تعداد ترفند برای راه اندازی این سرویس حیاتی در یک محیط عملی برای تان فراهم آوردیم.
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: postfix-mail-server.png مشاهده: 1 حجم: 68.0 کیلو بایت







    ایجاد رکوردهای A و MX برای Domain در DNS

    قبل از اینکه شروع به نصب سرویس کنیم چندین پیشنیاز هست که باید رعایت شود :
    1 : شما نیاز به یک دامین معتبر (valid domain) ریجیستر شده از طریق یک domain registerer (ثبت کننده دامین) دارید. در این پست ها ما از دامین زیر استفاده میکنیم که از طریق GoDaddy ریجیستر شده است.
    کد PHP:
    http://www.linuxnewz.com/ 
    2 : دامین بالا باید به ip خارجی (ip public) وی پی اس (vps) شما یا cloud hosting provider شما هدایت (redirect) شده باشد. اگر شما میل سرورتان را خودتان هاستینگ میکنید میتوانید سرویس ها ارائه شده توسط FreeDNS (که نیاز به registeration دارند) را استفاده کنید.

    در هر شرایطی شما باید record های A و MX را برای domain تان تعریف کنید. (برای کسب اطلاعات بیشتر درباره رکوردهای MX میتوانید این مقاله از گوگل را مطالعه بفرمایید.
    کد PHP:
    https://www.google.com/support/enterprise/static/postini/docs/admin/en/activate/mx_faq.html 
    بعد از اینکه رکوردها را اضافه کردید میتوانید با ابزار آنلاینی مانند MxToolbox یا ViewDNS برای مطمئن شدن از اینکه این رکوردها به درستی برای دامین شما تعریف شده اند استفاده کنید.

    نکته مهم : لطفا دقت کنید ممکن است یک تا دو روز طول بکشد که رکوردهای DNS شما ثبت شود و دامین شما در دسترس قرار گیرد. در این مدت شما میتوانید از طریق ip address در vps تان به سرور دسترسی داشته باشید و تسک های مشخص شده در زیر را در ان اجرا کنید.

    3 : تنظیم کردن FQDN یا Fully Qualified Domain Name برای vps تان :
    کد:
    # hostnamectl set-hostname yourhostname
    برای تعریف hostname سیستم فایل /etc/hosts را همانند زیر ویرایش کنید. (به جای AAA.BBB.CCC.DDD, yourhostname, و yourdomain باید ip public سرور، hostname خودتان و همچنین domain ریجیستر شده خودتان را جایگزین کنید) :
    کد:
    AAA.BBB.CCC.DDD yourhostname.yourdomain.com       yourhostname
    yourhostname در حقیقت hostname سیستم است که از قبل و با استفاده از دستور hostnamectl تعریف شده است.




    نصب پکیج های مورد نیاز

    4 : برای نصب پکیج های مورد نیاز همانند Apache, Postfix, Dovecot, MariaDB, PhpMyAdmin, SpamAssassin, ClamAV و غیره شما نیاز دارید ریپازیتوری EPEL را فعال کنید :
    کد:
    # yum install epel-release

    5 : بعد از اینکه مراحل بالا را انجام دادید پکیج های ضروری را با استفاده از دستور زیر نصب کنید :

    در سیستم های مبتنی بر CentOS :
    کد:
    # yum update && yum install httpd httpd-devel postfix dovecot dovecot-mysql spamassassin clamav clamav-scanner clamav-scanner-systemd clamav-data clamav-update mariadb mariadb-server php phpMyAdmin

    در سیستم های مبتنی بر Debian :
    کد:
    # aptitude update && aptitude install apache2 postfix dovecot-core dovecot-imapd dovecot-pop3d dovecot-lmtpd dovecot-mysql spamassassin clamav clamav-daemon clamav-base mariadb-client mariadb-server php5 phpMyAdmin

    6 : سرویس های دیتابیس و وب را استارت و فعال کنید :

    در سیستم های مبتنی بر CentOS :
    کد:
    # systemctl enable httpd mariadb
    # systemctl start httpd mariadb

    در سیستم های مبتنی بر Debian :
    کد:
    # systemctl enable apache2 mariadb
    # systemctl start apache2 mariadb
    هنگامی که نصب کامل شد و سرویس های بالا فعال و اجرا شدند شروع به تنظیم دیتابیس جدول ها به منظور ذخیره اطلاعاتی همانند اکانت های میل postfix خواهیم نمود.




    ایجاد دیتابیس اکانت های میل Postfix

    به منظور راحتی کار ما از phpmyadmin استفاده میکنیم. که ابزاریست برای مدیریت کردن adminstration دیتابیس های MySQL / MariaDB از طریق اینترفیس وب که به منظور ایجاد و مدیریت دیتابیس های میل مورد استفاده قرار میگیرد.

    به هر حال به منظور login کردن و استفاده از این ابزار ما باید مراحل زیر را دنبال کنیم.

    7 : فعال کردن اکانت MairaDB (شما میتوانید این کار را با استفاده از اجرای دستور mysql_secure_installation در شل انجام دهید و برای یوزر root پسورد تعریف کنید و همچنین تنظیمات پیش فرض را که توسط ابزار EXCEPT اعمال شده با تنظیم “Disallow root login remotely?“ تعریف کنید :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Disable-MySQL-root-Login.png مشاهده: 1 حجم: 11.0 کیلو بایت





    و یا از طرف دیگر یوزر جدید دیتابیس ایجاد کنیم :
    کد:
    MariaDB [(none)]> CREATE USER 'dba'@'localhost' IDENTIFIED BY 'YourPasswordHere';
    MariaDB [(none)]> GRANT ALL PRIVILEGES ON * . * TO 'dba'@'localhost';
    MariaDB [(none)]> FLUSH PRIVILEGES;
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Create-New-Database-User.png مشاهده: 1 حجم: 34.3 کیلو بایت








    امن کردن Apache با استفاده از یک Certificate

    8 : از انجایی که ما برای مدیریت دیتابیس ایمیل ها از یک اپلیکیشن web استفاده میکنیم نیاز داریم تا هشدارهای ضروری را برای محافظت از وصل شدن ها به سرور در نظر بگیریم.

    برای تنظیم کردن Transport Layer Security یا TLS در سرورتان مراحل مشخص شده در پست زیر را مطالعه بفرمایید :


    توجه : اگر شما به کنسول سرورتان دسترسی ندارید شما باید راه دیگری برای ایجاد این ارتباط در طول مرحله ایجاد key پیدا کنید در این چنین مواردی شما میتوانید ابزار rng-tools را نصب و همچنین دستور rngd-r /dev/urandom را اجرا کنید.




    تنظیمات و امنیت بخشیدن به phpmyadmin

    9 : در فایل /etc/httpd/conf.d/phpMyAdmin.conf روی CentOS یا فایل /etc/phpmyadmin/apache.conf روی سیستم های Debian تمام موارد خطوط زیر را در آن قرار دهید و مطمئن شوید که به ip public سرورتان اشاره میشود :
    کد:
    Require ip AAA.BBB.CCC.DDD
    Allow from AAA.BBB.CCC.DDD
    علاوه بر آن aliases های پیش فرض را غیر فعال کنید و یک aliase جدید برای دسترسی به صفحه لاگین phpmyadmin تان بسازید. این امر باعث میشود سایت شما در برابر حملات خارجی و Bots به مقصد www.yourdomain.com/phpmyadmin یا www.yourdomain.com/phpMyAdmin امن شود :
    کد:
    #Alias /phpMyAdmin /usr/share/phpMyAdmin
    #Alias /phpmyadmin /usr/share/phpMyAdmin
    Alias /managedb /usr/share/phpMyAdmin
    همچنین خط زیر را درون قسمت <IfModule mod_authz_core.c> قرار دهید :
    کد:
    Require all granted
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Secure-phpMyAdmin.png مشاهده: 1 حجم: 13.0 کیلو بایت








    ایجاد Apache VirtualHost برای Domain

    10 : مطمئن شوید که دامین شما به enabled sites اضافه شده باشد. فایل /etc/httpd/sites-available/linuxnewz.com.conf را روی centos یا /etc/apache2/sites-available/linuxnewz.com روی debian ایجاد کنید و محتویات زیر را در آن قرار دهید. (مطمئن شوید که دایرکتوری های DocumentRoot, sites-available, و sites-enabled موجود باشند) :
    کد:
    <VirtualHost *:80>
        ServerName www.linuxnewz.com
        ServerAlias linuxnewz.com
        DocumentRoot /var/www/linuxnewz.com/public_html
        ErrorLog /var/www/linuxnewz.com/error.log
        CustomLog /var/www/linuxnewz.com/requests.log combined
        Options Indexes FollowSymLinks
    </VirtualHost>

    و symbolic link آن را ایجاد میکنیم :

    روی CentOS :
    کد:
    # ln -s /etc/httpd/sites-available/linuxnewz.com.conf /etc/httpd/sites-enabled/linuxnewz.com.conf
    روی Debian :
    کد:
    # a2ensite linuxnewz.com



    تعریف دیتابیس ایمیل Postfix

    11 : اکنون شما میتوانید اینترفیس phpmyadmin را با استفاده از لینک https://www.yourdomain.com/managedb باز کنید (دقت کنید که managedb در حقیقت یک aliase است که برای دایرکتوری اطلاعات phpmyadmin تعریف شده است).

    اگر لینک بالا به هر دلیلی کار نکرد (ممکن است به علت مشکل در تنظیمات رکوردهای DNS باشد و یا هنوز این رکوردها اعمال نشده باشند) شما میتوانید به جای www.yourdomain.com از ip public سرورتان استفاده کنید :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: PhpMyAdmin-Login.png مشاهده: 1 حجم: 11.4 کیلو بایت






    بعد از لاگین کردن به phpmyadmin تان شما اینترفیسی شبیه به زیر خواهید دید. روی new در قسمت چپ کلیک کنید :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Create-New-Database.png مشاهده: 1 حجم: 12.4 کیلو بایت






    برای دیتابیس تان یک نام وارد کنید (در این بخش ما نام EmailServer_db را انتخاب کردیم و نیازی به انتخاب collation نیست) و روی create کلیک کنید :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Enter-Database-Name.png مشاهده: 1 حجم: 4.4 کیلو بایت






    12 : در صفحه بعدی یک نام برای اولین جدول انتخاب کنید (جایی که میخواهیم دامین هایی که این میل سرور مدیریت خواهد کرد را ذخیره کنیم. لطفا دقت کنید اگر چه در این پست ها ما تنها یک دامین رو مدیریت میکنیم شما میتوانید دامین های بیشتری را اضافه کنید) و تعداد فیلدهایی که شما میخواهید داشته باشد و سپس رو کلید Go کلیک کنید سپس شما به صفحه ای که مربوط به نام دهی و تنظیمات این دو فیلد میباشد هدایت خواهید شد شبیه به تصویر زیر خواهد بود :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Create-Database-Table.png مشاهده: 1 حجم: 13.1 کیلو بایت






    سپس برای index مربوط به Domainld گزینه ی PRIMARY را انتخاب کنید و مقدار پیش فرض را قبول کرده و روی Go کلیک کنید :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Add-Database-Index.png مشاهده: 1 حجم: 6.5 کیلو بایت






    همچنین میتوانید روی Preview SQL کلیک کنید تا دستور کامندی عملیات انجام شده را نیز مشاهده کنید :
    کد:
    CREATE TABLE `EmailServer_db`.`Domains_tbl` ( `DomainId` INT NOT NULL AUTO_INCREMENT , `DomainName` VARCHAR(50) NOT NULL , PRIMARY KEY (`DomainId`)) ENGINE = InnoDB;
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Database-Table-Index-Code.png مشاهده: 1 حجم: 7.4 کیلو بایت





    زمانی که کارتان تمام شد برای تایید تغییرات روی save کلیک کنید. سپس قادر خواهید بود تا با کلیک بر روی new در قسمت دیتابیس EmailServer_db به ساخت جدول هایتان ادامه دهید :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Create-Tables-under-Database.png مشاهده: 1 حجم: 5.6 کیلو بایت






    13 : اکنون مراحل زیر را برای ایجاد بقیه جدول ها دنبال کنید. روی تب SQL کلیک کنید و کد مشخص شده برای هر دیتابیس را وارد کنید.

    دقت کنید در اینجا ما میخواهیم جدول را با استفاده از یک SQL query ایجاد کنیم به خاطر اینکه ارتباطات بین دو جدول متفاوت ایجاد شود :

    Users_tbl
    کد:
    CREATE TABLE `Users_tbl` (
        `UserId` INT NOT NULL AUTO_INCREMENT,  
        `DomainId` INT NOT NULL,  
        `password` VARCHAR(100) NOT NULL,  
        `Email` VARCHAR(100) NOT NULL,  
        PRIMARY KEY (`UserId`),  
        UNIQUE KEY `Email` (`Email`),  
        FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
    ) ENGINE = InnoDB;
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Create-Postfix-User-Table.png مشاهده: 1 حجم: 8.6 کیلو بایت






    شما باید پیغام تاییدی مانند زیر دریافت کنید (در غیر اینصورت phpmyadmin به شما یک خطای syntax error به شما برمیگرداند) :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: MySQL-Confirmation.png مشاهده: 1 حجم: 3.1 کیلو بایت





    Alias_tbl
    کد:
    CREATE TABLE `Alias_tbl` (
        `AliasId` INT NOT NULL AUTO_INCREMENT,
        `DomainId` INT NOT NULL,
        `Source` varchar(100) NOT NULL,
        `Destination` varchar(100) NOT NULL,
        PRIMARY KEY (`AliasId`),
        FOREIGN KEY (DomainId) REFERENCES Domains_tbl(DomainId) ON DELETE CASCADE
    ) ENGINE = InnoDB;
    (سپس روی Go در پایین صفحه کلیک کنید تا به مرحله ایجاد جدول برگردید)

    شما باید ساختار دیتابیسی همانند زیر داشته باشید :
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: Database-Structure.png مشاهده: 1 حجم: 10.5 کیلو بایت





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




    ایجاد یک دامین Postfix و User ها و aliases

    14 : اکنون ما record های زیر را درون 3 جدول وارد خواهیم کرد. پسوردهای tecmint@linuxnewz.com و linuxsay@linuxnewz.com در حقیقت encrypt خواهند شد و با استفاده از INSERT INTO Users_tbl وارد جدول میشوند.

    همچنین لطفا توجه داشته باشید که ایمیل هایی که به info@linuxnewz.com ارسال میشوند به tecmint@linuxnewz.com ریدایرکت (redirect) خواهند شد :
    کد:
    INSERT INTO Domains_tbl (DomainName) VALUES ('linuxnewz.com');  
    INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForFirstEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'tecmint@linuxnewz.com');  
    INSERT INTO Users_tbl (DomainId, password, Email) VALUES (1, ENCRYPT('PasswordForSecondEmailAccount', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))), 'linuxsay@linuxnewz.com');  
    INSERT INTO Alias_tbl (DomainId, Source, Destination) VALUES (1, 'info@linuxnewz.com', 'tecmint@linuxnewz.com');

    بعد از اضافه کردن domain دو اکانت کاربر و یک ایمیل alias اکنون ما آماده ایم که به تنظیمات میل سرورمان ادامه دهیم که در مقاله بعدی به آن خواهیم پرداخت و در آن شروع به تنظیم Dovecot و Postfix خواهیم کرد.

    همراه ما بمانید ...
    محمد هابیلی
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-14-2020, 12:33 AM.

    #2
    ممنون جناب هابیلی خیلی عالی بود

    اینطور که پیداست قرار من تا ابد شاگردت بمونم

    کامنت


      #3
      مخلصیم هادی جان. خوشحالم مفید واقع شده. موفق باشی:280:

      کامنت

      درباره انجمن منطقه لینوکسی ها

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

      شبکه های اجتماعی
      در حال انجام ...
      X