اطلاعیه

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

آموزش کانفیگ سرور ایمیل یا Mail Server به کمک Postfix, Dovecot, MySQL

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

    آموزش کانفیگ سرور ایمیل یا Mail Server به کمک Postfix, Dovecot, MySQL

    برای راه اندازی این Mail Server روی لینوکس اوبونتو از سرویس های Postfix Dovecot و MySQL و SpamAssassin استفاده میکنیم . در صورت کانفیگ صحیح ، ایمیل های سرور شما اسپم نخواهد شد و مستقیما به Inbox خواهند رفت .

    آموزش کانفیگ سرور ایمیل یا Mail Server به کمک Postfix, Dovecot, MySQL

    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	Email-Sequence.jpg نمایش ها:	1 اندازه:	372.5 KB شناسه:	18587

    آموزش کانفیگ سرور ایمیل یا Mail Server :
    پیش نیاز ها :

    یک آدرس دامنه پارک شده روی سرور
    نصب سرویس MySQL Server
    دسترسی Root
    استفاده از Hostname ولید و معتبر

    نصب سرویس ها :
    ابتدا باید آخرین نسخه های پایدار سرویس های Postfix و Dovecot و MySQL و آنتی اسپمر SpamAssasin را روی سرور لینوکس نصب کنیم :

    کد PHP:
    apt-get install postfix postfix-mysql dovecot-core dovecot-imapd dovecot-lmtpd dovecot-mysql 
    در هنگام نصب سرویس Postfix در لینوکس اوبونتو حتما گزینه internet Site را انتخاب کنید . در ادامه نصب ، Postfix از شما مشخصات FDQN را سوال میکند که باید Hostname ولید سرور را معرفی کنید .

    ساختن دیتابیس MySQL و Virtual Domain و ساخت User :
    ابتدا یک دیتابیس MySQL میسازیم و ۳ جدول در آن ایجاد میکنیم . یکی برای یوزر ها ، یکی برای دامنه ها و دیگری برای alias ها :

    کد PHP:
    mysqladmin -p create servermail
    mysql 
    -u root -p
    mysql 
    >
    mysql GRANT SELECT ON servermail.* TO ‘usermail’@’127.0.0.1′ IDENTIFIED BY ‘mailpassword';
    mysql > FLUSH PRIVILEGES;
    mysql> USE servermail;

    CREATE TABLE virtual_domains (
    id INT NOT NULL AUTO_INCREMENT,
    name VARCHAR(50) NOT NULL,
    PRIMARY KEY (id)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    CREATE TABLE virtual_users (
    id INT NOT NULL AUTO_INCREMENT,
    domain_id INT NOT NULL,
    password VARCHAR(106) NOT NULL,
    email VARCHAR(120) NOT NULL,
    PRIMARY KEY (id),
    UNIQUE KEY email (email),
    FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

    CREATE TABLE virtual_aliases (
    id INT NOT NULL AUTO_INCREMENT,
    domain_id INT NOT NULL,
    source varchar(100) NOT NULL,
    destination varchar(100) NOT NULL,
    PRIMARY KEY (id),
    FOREIGN KEY (domain_id) REFERENCES virtual_domains(id) ON DELETE CASCADE
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8; 
    کار ساخت دیتابیس و جداول مربوط به آن تمام شد . مرحله بعدی ، وارد کردن اطلاعات مورد نظر به دیتابیس است .

    ابتدا دامنه های مورد نظر خود را داخل جدول Virtual Domains مربوط به دیتابیس ساخته شده وارد میکنیم .

    کد PHP:
    INSERT INTO servermail.virtual_domains
    (id ,name)
    VALUES
    (‘1′‘example.com’),
    (
    ‘2′‘hostname.example.com’); 
    در مرحله بعدی اطلاعات مربوط به آدرس های ایمیل و کلمات عبور مربوط به هر آدرس را داخل جدول virtual_users وارد میکنیم :

    کد PHP:
    INSERT INTO servermail.virtual_users
    (iddomain_idpassword email)
    VALUES
    (‘1′‘1’ENCRYPT(‘firstpassword’CONCAT($6$’SUBSTRING(SHA(RAND()), -16))), ‘email1@example.com’),
    (
    ‘2′‘1’ENCRYPT(‘secondpassword’CONCAT($6$’SUBSTRING(SHA(RAND()), -16))), ‘email2@example.com’); 
    و سر انجام alias های مربوط به هر آدرس ایمیل که عموما برای ایجاد Email Forwarder استفاده میشوند را داخل جدول virtual_aliases وارد میکنیم :

    کد PHP:
    INSERT INTO servermail.virtual_aliases
    (iddomain_idsourcedestination)
    VALUES
    (‘1′‘1’‘alias@example.com’‘email1@example.com’); 
    و به کمک دستور زیر از MySQL خارج میشویم :

    کد PHP:
    mysql > exit 
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	1247-postfix_dovecot_mysql_incoming.jpg نمایش ها:	1 اندازه:	48.8 KB شناسه:	18588


    کانفیگ Postfix :
    در این مرحله با کانفیگ سرویس Postfix امکان هندل کردن کانکشن های SMTP و همچنین ارسال پیام و ایمیل برای تمامی یوزر های ساخته شده در دیتابیس Mail Server فراهم میگردد .

    ابتدا مسیرفایل main.cf را تغییر داده و این فایل را ویرایش میکنیم :

    کد PHP:
    cp /etc/postfix/main.cf /etc/postfix/main.cf.orig
    vi 
    /etc/postfix/main.cf 
    و مقادیر آن را به شکل زیر تغییر میدهیم :

    کد PHP:
    # TLS parameters
    #smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
    #smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
    #smtpd_use_tls=yes
    #smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
    #smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
    smtpd_tls_cert_file=/etc/ssl/certs/dovecot.pem
    smtpd_tls_key_file
    =/etc/ssl/private/dovecot.pem
    smtpd_use_tls
    =yes
    smtpd_tls_auth_only 
    yes

    smtpd_sasl_type 
    dovecot
    smtpd_sasl_path 
    = private/auth
    smtpd_sasl_auth_enable 
    yes
    smtpd_recipient_restrictions 
    =
    permit_sasl_authenticated,
    permit_mynetworks,
    reject_unauth_destination

    #mydestination = example.com, hostname.example.com, localhost.example.com, localhost
    mydestination localhost

    virtual_transport 
    lmtp:unix:private/dovecot-lmtp 
    و سرو انجام این ۳ خط را به فایل اضافه کرده و فایل را ذخیره میکنیم :

    کد PHP:
    virtual_mailbox_domains mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf
    virtual_mailbox_maps 
    mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf
    virtual_alias_maps 
    mysql:/etc/postfix/mysql-virtual-alias-maps.cf 
    در مرحله بعدی یک فایل به نام mysql-virtual-mailbox-domaincs.cf ایجاد کرده و مطابق زیر آن را ویرایش کنید :

    کد PHP:
    vi /etc/postfix/mysql-virtual-mailbox-domains.cf

    user 
    usermail
    password 
    mailpassword
    hosts 
    127.0.0.1
    dbname 
    servermail
    query 
    SELECT 1 FROM virtual_domains WHERE name=%s’ 
    و سر انجام سرویس Postfix را ریست میکنیم :

    کد PHP:
    service postfix restart 
    حالا تست میکنیم تا اطمینان حاصل کنیم سرویس Postfix دامنه مورد نظر شما را پیدا کرده و به درستی با حدول دامنه ها در دیتابیس ایمیل ها ارتباط برقرارمیکند . خروجی دستور زیر در صورت عدم وجود مشکل در کانفیگ Posftix عدد ۱ خواهد بود :

    کد PHP:
    postmap -q example.com mysql:/etc/postfix/mysql-virtual-mailbox-domains.cf 
    حالا فایلی به نام mysql-virtual-mailbox-maps.cf ایجا کرده و به شکل زیر آن را ویرایش کنید :

    کد PHP:
    vi /etc/postfix/mysql-virtual-mailbox-maps.cf

    user 
    usermail
    password 
    mailpassword
    hosts 
    127.0.0.1
    dbname 
    servermail
    query 
    SELECT 1 FROM virtual_users WHERE email=%s’ 
    و مجددا postfix را ریستارت میکنیم :

    کد PHP:
    service postfix restart 
    و مجددا جهت اطمینان از دسترسی Postfix این بار به اطلاعات مربوط به آدرس ایمیل ها در جدول مربوطه دستور زیر را وارد میکنیم :

    کد PHP:
    postmap -q email1@example.com mysql:/etc/postfix/mysql-virtual-mailbox-maps.cf 
    خروجی ۱ نشان دهنده کانفیگ صحیح و عدم وجود مشکل است .

    آخرین فایل مربوط به ایجاد کانکشن بین Postfix و MySQL است :

    کد PHP:
    vi /etc/postfix/mysql-virtual-alias-maps.cf

    user 
    usermail
    password 
    mailpassword
    hosts 
    127.0.0.1
    dbname 
    servermail
    query 
    SELECT destination FROM virtual_aliases WHERE source=%s’ 
    و ریستارت کردن سرویس Postfix :

    کد PHP:
    service postfix restart 
    خروجی دستور زیر در محیط ssh درواقع forwarder های مربوط به alias مورد نظر را به شما نشان خواهد داد :

    کد PHP:
    postmap -q alias@example.com mysql:/etc/postfix/mysql-virtual-alias-maps.cf 
    کانفیگ Dovecot :
    قبل از آغاز کانفیگ سرویس Dovecot در لینوکس و محیط ssh دستورات زیر را اجرا کنید :

    کد PHP:
    cp /etc/dovecot/dovecot.conf /etc/dovecot/dovecot.conf.orig
    cp 
    /etc/dovecot/conf.d/10-mail.conf /etc/dovecot/conf.d/10-mail.conf.orig
    cp 
    /etc/dovecot/conf.d/10-auth.conf /etc/dovecot/conf.d/10-auth.conf.orig
    cp 
    /etc/dovecot/dovecot-sql.conf.ext /etc/dovecot/dovecot-sql.conf.ext.orig
    cp 
    /etc/dovecot/conf.d/10-master.conf /etc/dovecot/conf.d/10-master.conf.orig
    cp 
    /etc/dovecot/conf.d/10-ssl.conf /etc/dovecot/conf.d/10-ssl.conf.orig 
    حالا فایل کانفیگ dovecot را ویرایش میکنیم :

    کد PHP:
    vi /etc/dovecot/dovecot.conf 
    و خط زیر را اصطلاحا uncomment میکنیم :

    کد PHP:
    !include conf.d/*.conf 
    و تغییرات زیر را در فایل dovecot.conf اعمال کرده و فایل را ذخیره میکنیم :

    کد PHP:
    !include_try /usr/share/dovecot/protocols.d/*.protocol
    protocols = imap lmtp 
    در مرحله بعدی فایل مربوط به تنظیمات ایمیل را ویرایش میکنیم :

    کد PHP:
    nano /etc/dovecot/conf.d/10-mail.conf 
    خط mail_location را پیدا کرده ، آن را uncomment میکنیم و پارامتر های زیر را به آن اضافه میکنیم :

    کد PHP:
    mail_location maildir:/var/mail/vhosts/%d/%
    حالا به دنبال خط mail_privileged_group میگردیم و آن را به این شکل تغییر میدهیم :

    کد PHP:
    mail_privileged_group mail 

    کانفیگ Postfix و Dovecot
    برای بزرگتر شدن عکس روی آن کلیک کنید  نام:	dovecot-postfix.png نمایش ها:	1 اندازه:	69.7 KB شناسه:	18589


    بررسی دسترسی ها :

    خروجی دستور زیر :

    کد PHP:
    ls -ld /var/mail 
    باید مشابه این باشد :

    کد PHP:
    drwxrwsr-x 3 root vmail 4096 Jan 24 21:23 /var/mail 
    حالا به ازای هر دامنه ای که در دیتابیس اضافه کرده ایم یک پوشه در مسیر زیر میسازیم :

    کد PHP:
    mkdir -/var/mail/vhosts/example.com 
    حالا یک گروه و یوزر جدید ساخته و مالکیت پوشه /var/mail را به آن تغییر میدهیم :

    کد PHP:
    groupadd -g 5000 vmail
    useradd 
    -g vmail -u 5000 vmail -/var/mail

    chown 
    -R vmail:vmail /var/mail 
    حالا فایل زیر را ویرایش میکنیم :

    کد PHP:
    nano /etc/dovecot/conf.d/10-auth.conf 
    و مقادیر آن را به شکل زیر تغییر میدهیم :

    کد PHP:
    disable_plaintext_auth yes
    auth_mechanisms 
    plain login
    !include auth-system.conf.ext
    !include auth-sql.conf.ext 
    در ادامه مراحل کانفیگ Mail Server یک فایل جدید ایجاد کرده و به این صورت ویرایش میکنیم :

    کد PHP:
    nano /etc/dovecot/conf.d/auth-sql.conf.ext

    passdb 
    {
    driver sql
    args 
    = /etc/dovecot/dovecot-sql.conf.ext
    }
    userdb {
    driver = static
    args uid=vmail gid=vmail home=/var/mail/vhosts/%d/%n

    ویرایش این فایل و انجام تغییرات و ذخیره تغییرات :

    کد PHP:
    nano /etc/dovecot/dovecot-sql.conf.ext

    driver 
    mysql
    connect 
    host=127.0.0.1 dbname=servermail user=usermail password=mailpassword
    default_pass_scheme 
    SHA512-CRYPT
    password_query 
    SELECT email as userpassword FROM virtual_users WHERE email=%u'; 
    حالا مالکیت های مربوط به پوشه dovecot را نیز تغییر میدهیم :

    کد PHP:
    chown -R vmail:dovecot /etc/dovecot
    chmod 
    -R o-rwx /etc/dovecot 
    در ادامه فایر /etc/dovecot/conf.d/10-master.conf را باز کرده و به این صورت ویرایش میکنیم :

    کد PHP:
    nano /etc/dovecot/conf.d/10-master.conf

    ##Uncomment inet_listener_imap and modify to port 0
    service imap-login {
    inet_listener imap {
    port 0
    }

    #Create LMTP socket and this configurations
    service lmtp {
    unix_listener /var/spool/postfix/private/dovecot-lmtp {
    mode 0600
    user 
    postfix
    group 
    postfix
    }
    #inet_listener lmtp {
    # Avoid making LMTP visible for the entire internet
    #address =
    #port =
    #}
    }

    service auth {

    unix_listener /var/spool/postfix/private/auth {
    mode 0666
    user 
    postfix
    group 
    postfix
    }

    unix_listener auth-userdb {
    mode 0600
    user 
    vmail
    #group =
    }

    #unix_listener /var/spool/postfix/private/auth {
    # mode = 0666
    #}

    user dovecot
    }

    service auth-worker {
    # Auth worker process is run as root by default, so that it can access
    # /etc/shadow. If this isn’t necessary, the user should be changed to
    # $default_internal_user.
    user vmail

    سرویس dovecot را ریستارت میکنیم :

    کد PHP:
    service dovecot restart 
    در آموزش بعدی ، نحوه جلوگیری از ارسال اسپم توسط Mail Server و همچنین پیشگیری کردن از Spam شناخته شدن آی پی سرور شما به کمک سرویس SpamAssasin را آموزش خواهیم داد .


    نویسنده Babak Ajideh
    آخرین ویرایش توسط Habili; در تاریخ/ساعت 01-13-2020, 03:06 AM.

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

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

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