Let's Encrypt를 사용한 보안 메일 서버 구축 (Cent OS7 + Postfix + Dovecot)

소개



자신의 도메인을 이용한 메일 서버의 구축 방법은, 인터넷을 찾으면 얼마든지 구르고 있습니다.
그러나
  • OS 버전 등을 이유로 한 정보의 오래된
  • Let's Encrypt와 서비스의 연계 자체가 아직 많지 않다

  • → 스스로 기사를 만들어 봅시다.
    라는 이야기로.

    이 기사에서는 표제대로의 운용이 최저한 가능하다고 하는 레벨을 전제로 하고 있으므로, 만약 플러스 알파의 설정이 필요한 경우는 별도 각자로 추가하도록 해 주세요.

    전제 조건



    CentOS 7에 sudo 권한이 있는 사용자가 게시됨
    DNS 레코드가 A, MX 모두 제대로 설정되어 있어야 함(이 예에서는 A:example.com, MX:mail.example.com)
    SELinux 및 Firewalld 설정이 이미 완료되었습니다

    주로 할 일


  • SSL 인증서 얻기
  • 발신 메일 서버 (Postfix) 배포 및 구성
  • 수신 메일 서버 (Dovecot) 배포 및 구성

  • 1. Let's Encrypt에서 편안한 인증서 발급



    Let's Encrypt는 mozilla, Akamai, Cisco, Google, Facebook 등을 비롯한 대기업 IT 기업의 지원을 받아 2014년에 창설된 프로젝트로 개인에서도 신뢰할 수 있는 서버 인증서를 무료로 발행할 수 있다 수 있습니다.

    ※도입전에, 자신의 서버로 Web서버가 움직이고 있는 경우는 떨어뜨립니다.
    sudo yum list installed git로 git이 들어 있는지 확인
    그렇지 않으면 sudo yum -y install git로 설치하십시오.
    계속해서
    git clone https://github.com/letsencrypt/letsencrypt
    cd letsencrypt/
    ./letsencrypt-auto --help
    

    이제 키 생성 준비는 OK입니다.
    필요에 따라 sudo용의 패스워드를 요구되므로 넣어 봅시다.
    ./letsencrypt-auto certonly --standalone \
    -d mail.example.com \
    -m 管理用メールアドレス@example.com \
    --agree-tos
    

    를 입력하면 자동으로 키 작성 설정이 시작됩니다.
    -d 이하는 자신이 취득한 도메인에 맞추어 변경해 주세요.
    설치가 끝나면 /etc/letsencrypt/live/cloud.example.jp/fullchain.pem 형식으로 파일이 만들어집니다.

    2. Postfix를 넣자


    sudo yum -y install postfix 그냥.
    라고 해도 CentOS의 경우 데포로 들어 있다고 생각합니다!

    설정 파일을 다음과 같이 편집합니다.

    /etc/postfix/main.cf
    #myhostname = host.domain.tld
     ↓
    myhostname = mail.example.com
    
    #mydomain = domain.tld
     ↓
    mydomain = example.com
    
    #myorigin = $mydomain
     ↓
    myorigin = $mydomain
    
    inet_interfaces = localhost
     ↓
    inet_interfaces = all
    
    mydestination = $myhostname, localhost.$mydomain, localhost
     ↓
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    
    
    #home_mailbox = Maildir/
     ↓
    home_mailbox = Maildir/
    
    #smtpd_banner = $myhostname ESMTP $mail_name
     ↓
    smtpd_banner = $myhostname ESMTP
    
    
    以下をファイルの最後に追記
    
    smtpd_sasl_auth_enable = yes
    
    smtpd_sasl_type = dovecot
    
    smtpd_sasl_path = private/auth
    
    smtpd_use_tls = yes
    
    smtp_tls_security_level = may
    
    smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
    smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
    
    smtpd_tls_loglevel = 1
    
    smtpd_tls_received_header = yes
    
    smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
    
    smtpd_tls_session_cache_timeout = 3600s
    
    smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
    

    이어서

    /etc/postfix/master.cf
    #smtps     inet  n       -       n       -       -       smtpd
    #  -o syslog_name=postfix/smtps
    #  -o smtpd_tls_wrappermode=yes
    #  -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
     ↓
    smtps     inet  n       -       n       -       -       smtpd
    #  -o syslog_name=postfix/smtps
      -o smtpd_tls_wrappermode=yes
      -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
    

    이상을 변경 한 후 다음 명령을 입력하십시오.
    postmap /etc/postfix/access
    postfix check
    

    아무것도 오류가 표시되지 않으면
    systemctl start postfix
    systemctl enable postfix
    

    이것으로 postfix의 설정은 종료.

    3. Dovecot을 넣자



    우선은 sudo yum -y install dovecot로 인스톨 하고 나서 각종 설정 파일을 빡빡하게 갑니다.

    /etc/dovecot/conf.d/10-master.conf
    service imap-login {
      inet_listener imap {
        #port = 143
         ↓
        port = 0
      }
      inet_listener imaps {
        #port = 993
        #ssl = yes
         ↓
        port = 993
        ssl = yes
      }
    }
    
    service pop3-login {
      inet_listener pop3 {
        #port = 110
         ↓
        port = 0
      }
      inet_listener pop3s {
        #port = 995
        #ssl = yes
         ↓
        port = 995
        ssl = yes
      }
    }
    

    /etc/dovecot/conf.d/10-master.conf
    service auth {
     (略)
      # Postfix smtp-auth
      #unix_listener /var/spool/postfix/private/auth {
      #  mode = 0666
      #}
     ↓
      unix_listener /var/spool/postfix/private/auth {
        mode = 0660
        user = postfix
        group = postfix        
      }
    }
    

    /etc/dovecot/conf.d/10-auth.conf
    #disable_plaintext_auth = yes
     ↓
    disable_plaintext_auth = no
    
    auth_mechanisms = plain
     ↓
    auth_mechanisms = plain login
    

    /etc/dovecot/conf.d/10-ssl.conf
    ssl = required
     ↓
    ssl = yes
    
    #ssl_cert = </etc/pki/dovecot/certs/dovecot.pem
    #ssl_key = </etc/pki/dovecot/private/dovecot.pem
     ↓
    ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
    ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
    

    /etc/dovecot/conf.d/10-mail.conf
    #mail_location = 
     ↓
    mail_location = maildir:~/Maildir
    

    마지막으로 Dovecot을 시작합시다.
    systemctl start dovecot
    systemctl enable dovecot
    

    수신 서버는 이것뿐.

    3. 마지막으로 계정 배포


    useradd -s /sbin/nologin user
    passwd user
    

    4. 클라이언트에서 설정



    Thunderbird를 예로 들어 ...

    좋은 웹페이지 즐겨찾기