اطلاعیه

بستن
هنوز اعلام نشده است.

راه اندازی TLS و SSL در Postfix و Dovecot

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

  • راه اندازی TLS و SSL در Postfix و Dovecot

    در مقاله قبلی ما نحوه راه اندازی یک Mail Server لینوکسی را به شما آموزش دادیم،‌ در این پست قصد داریم نحوه نصب و راه اندازی پروتکل TLS در Postfix و SSL در Dovecot را شرح دهیم. دو پروتکل SSL و TLS با هدف امن کردن ارتباطات مابین کلاینت و سرور طراحی و پیاده‌سازی شده اند. این پروتوکل ها از طریق اهراز هویت و رمزنگاری ارتباطات را امن کرده و در این راستا به جهت امن کردن داده‌ها از cipher suite ها استفاده می‌کنند. هر cipher suite مجموعه ای از الگوریتم‌های authority, encryption و Message Authority Code یا (MAC) است. در پیاده سازی و کانفیگ TLS/SSL تنظیمات باید کاملا درست انجام‌ شده و cipher suite های امنی مورد استفاده قرار گیرد. این دو پروتوکل را روی انواع سرورها مورد استفاده قرار می دهند. از جمله سرورهایی که این دو پروتوکل نقش مهمی در آنها ایفا می کنند postfix و dovecot است.
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: email-security.jpg مشاهده: 1 حجم: 142.4 کیلو بایت








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

    آموزش نصب و راه اندازی Mail Server لینوکسی با Postfix و Dovecot

    آموزش نصب Amavisd، Spamassassin و آنتی ویروس Clamav



    Postfix و TLS

    فایل /etc/postfix/main.cf را ویرایش کنید و خطوط زیر را به انتهای آن اضافه کنید.
    کد PHP:
    # TLS
    smtpd_use_tls yes
    smtpd_tls_security_level 
    may
    smtpd_tls_auth_only 
    yes
    smtpd_tls_key_file 
    = /etc/postfix/myserver.key
    smtpd_tls_cert_file 
    = /etc/postfix/server.crt
    smtpd_tls_loglevel 
    1
    smtpd_tls_received_header 
    yes
    smtpd_tls_session_cache_timeout 
    3600s
    tls_random_source 
    dev:/dev/urandom

    # SASL
    smtpd_sasl_type dovecot
    broken_sasl_auth_clients 
    yes
    smtpd_sasl_path 
    = private/auth
    smtpd_sasl_auth_enable 
    yes
    smtpd_sasl_security_options 
    noanonymous
    smtpd_recipient_restrictions 
    permit_sasl_authenticatedpermit_mynetworksreject_unauth_destination
    smtpd_relay_restrictions 
    permit_sasl_authenticatedpermit_mynetworksreject_unauth_destination 
    نکته : در postfix v 2.10 خط آخر مورد نیاز میباشد.

    سپس، فایل /etc/postfix/master.cf را ویرایش کنید و comment ها را از بخش submission حذف کنید.
    کد PHP:
    submission inet n       -       n       -       -       smtpd
      
    -o syslog_name=postfix/submission
      
    -o smtpd_tls_security_level=encrypt
      
    -o smtpd_sasl_auth_enable=yes
      
    -o smtpd_reject_unlisted_recipient=no
    #  -o smtpd_client_restrictions=$mua_client_restrictions
    #  -o smtpd_helo_restrictions=$mua_helo_restrictions
    #  -o smtpd_sender_restrictions=$mua_sender_restrictions
      
    -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
      
    -o milter_macro_daemon_name=ORIGINATING 
    بعد از تغییرات سرویس postfix را restart کنید.
    کد PHP:
    systemctl restart postfix 
    برای کسب اطلاعات بیشتر که این مقدار به چه معنا است، لینک هایی که در آخر این پست ذکر شده را بررسی کنید.

    اگر شما دستور زیر را اجرا کنید‌ :
    کد PHP:
    ss -grep submission
    grep submission 
    /etc/services 
    متوجه خواهید شد که postfix نیز در حال listen کردن روی پورت 587 میباشد. در صورتی که در فایروال تان این پورت فعال نیست آنرا به فایروال اضافه کنید، اما پورت 25 را نبندید. این پورت برای ارتباط بین سرورها استفاده میشود.
    کد PHP:
    firewall-cmd --add-port=587/tcp
    firewall
    -cmd --reload 
    اگر شما دستور telnet localhost 587 را اجرا کنید و EHLO something.com را تایپ کنید شما مشاهده میکنید که postfix با STARTTLS پاسخ میدهد.
    کد PHP:
    telnet localhost 587
    Trying 
    ::1...
    Connected to localhost.
    Escape character is '^]'.
    220 master.iandreev.us ESMTP Postfix
    EHLO asdf
    .com
    250
    -master.iandreev.us
    250
    -PIPELINING
    250
    -SIZE 10240000
    250
    -VRFY
    250
    -ETRN
    250
    -STARTTLS
    250
    -ENHANCEDSTATUSCODES
    250
    -8BITMIME
    250 DSN 
    برای خارج شدن CTRL-] را فشار دهید و سپس quit را تایپ کنید.



    Dovecot و SSL

    فایل 10-auth.conf را ویرایش و خط زیر را به yes تغییر دهید.
    کد PHP:
    disable_plaintext_auth yes 
    سپس فایل 10-ssl.conf را ویرایش و همانند زیر تغییر دهید.
    کد PHP:
    ssl yes
    ssl_cert 
    = </etc/postfix/server.crt
    ssl_key 
    = </etc/postfix/myserver.key 
    ما از certificate های self-signed استفاده خواهیم کرد، اما میتوانید این سایت http://www.startssl.com/ را برای certificate های رایگان بررسی کنید. گواهینامه های self-signed جعلی هستند، بنابراین زمانیکه قصد دارید ایمیلی send/recive کنید، از شما برای پذیرفتن یک certificate جعلی، سوال پرسیده میشود اما هدف این است که به شما نشان دهیم چطور از آنها استفاده کنید.

    بر خلاف دامین های virtual آپاچی، شما برای هر یک از virtual domain ها به چندین certificate نیاز نخواهید داشت.
    کد PHP:
    cd /etc/postfix
    openssl genrsa 
    -out myserver.key 1024
    openssl req 
    -new -key myserver.key -out myserver.csr 
    به برخی سوالات برای دریافت certificate پاسخ دهید.
    کد PHP:
    You are about to be asked to enter information that will be incorporated
    into your certificate request
    .
    What you are about to enter is what is called a Distinguished Name or a DN.
    There are quite a few fields but you can leave some blank
    For some fields there will be a default value,
    If 
    you enter '.'the field will be left blank.
    -----
    Country Name (2 letter code) [AU]:IR
    State 
    or Province Name (full name) [Some-State]:NJ
    Locality Name 
    (egcity) []:Tehran
    Organization Name 
    (egcompany) [Internet Widgits Pty Ltd]:linux-zone
    Organizational Unit Name 
    (egsection) []:
    Common Name (e.gserver FQDN or YOUR name) []:www.domain-1.com
    Email Address 
    []:habili@domain-1.com

    Please enter the following 
    'extra' attributes
    to be sent with your certificate request
    A challenge password 
    []:
    An optional company name []: 
    certificate را امضاء کنید.
    کد PHP:
    openssl x509 -req -days 3650 -in myserver.csr -signkey myserver.key -out server.crt 
    فایل های certificate باید در مسیر /etc/postfix باشند. postfix و dovecot را restart کنید.
    کد PHP:
    systemctl restart postfix
    systemctl restart dovecot 
    شما میتوانید SMTP SSL/TLS را روی پورت 587 تست کنید.
    کد PHP:
    openssl s_client -starttls smtp -connect localhost:587 
    سپس ehlo something.com را تایپ کنید،‌ Enter را فشار دهید و سپس mail from:habili@domain-1.com را تایپ کنید. اگر تمام مراحل به درستی کار کنند شما تا اینجای کار درست پیش رفته اید. برای تست SASL در postfix و dovecot تایپ کنید :
    کد PHP:
    doveadm auth test -/var/spool/postfix/private/auth habili@domain-1.com secret
    passdb
    habili@domain-1.com auth succeeded
    extra fields
    :
      
    user=habili@domain-1.com 
    اگر بخواهید میتوانید در فایروال IMAP و POP3 را همانند زیر باز کنید.
    کد PHP:
    firewall-cmd --add-port=993/tcp
    firewall
    -cmd --add-port=995/tcp
    firewall
    -cmd --reload 
    در اینجا شما باید قادر به ارسال ایمیل از MUA مورد علاقه خود باشید اما برای ارسال و دریافت شما بایست یکسری تغییرات اعمال کنید. برای مثال در Outlook شما باید تغییرات زیر را اعمال کنید.
    برای دیدن سایز بزرگ روی عکس کلیک کنید  نام: outlook-postfix-dovecot-config.png مشاهده: 1 حجم: 7.4 کیلو بایت










    بنابراین در اینجا نیازی به پورت های 110 و 143 نداریم و به جای آنها باید از 995 برای POP3 و 587 برای SMTP و 993 برای IMAP استفاده کنید. username آدرس ایمیل شما و password رمز عبوریست که شما با استفاده از دستور doveadm pw ایجاد کردید.

    دقت کنید که اگر شما میخواهید یک کلاینت web مانند Roundcube استفاده کنید و Roundcube روی همان سروری که postfix و dovecot هستند نصب باشد نیازی ندارید که هیچ پورتی غیر از 25 را باز کنید.
    ویرایش توسط Habili : http://linux-zone.org/forums/member/5-habili در ساعت 08-08-2018, 12:22 PM
پردازش ...
X
کانال تلگرام منطقه لینوکسی ها