CentOS7+Postfix+Dovecot+Let'sEncrypt로 메일 서버 구축

소개



n번 달콤한 제목입니다만, 뭔가의 참고가 되면 다행입니다.
이런 설정은 넷상에 떨어지고 있는 정보를 주워 와도 흔히 잘 되지 않는 것입니다.
내 환경에서는 이것으로 능숙하게 갔습니다만, 이것으로 능숙하지 않을 때는 스스로 노력해 검색합시다.
기본적으로 htps : // 전신 srv. 코 m/포 st후우 x. shtml 를 참고로 했습니다.
  • #○○ 는 (내가 쓴) 코멘트이므로 실제 파일에는 없습니다. 입력하지 마십시오.
  • example.com 부분은 자신의 도메인이어야 합니다.

  • 목표


  • 프로토콜은 IMAPs, SMTPs
  • Maildir 형식
  • 메일 사용자가 SSH를 방지합니다.

  • 환경


    > cat /etc/redhat-release
    CentOS Linux release 7.3.1611 (Core)
    

    1. Let'sEncrypt로 인증서 발급



    1.1 certbot 설치


    > yum -y install certbot
    

    1.2 인증서 발급


    \ 앞의 반각 공간을 잊지 않도록
    > certbot certonly --standalone \
    > -d 発行したいドメイン \
    > -m 管理用メールアドレス \
    > --agree-tos
    


    > certbot certonly --standalone \
    > -d mail.example.com \
    > -m [email protected] \
    > --agree-tos
    

    1.3 증명서가 되어 있는 것을 확인


    > ls /etc/letsencrypt/live/mail.example.com/
    README  cert.pem  chain.pem  fullchain.pem  privkey.pem
    

    1.4 인증서 자동 업데이트 설정



    매일 아침 8시에 인증서가 만료되지 않았는지 확인하고, 기한이 가까우면 업데이트하고 서비스를 다시 시작합니다.
    > crontab -e
    00 08 * * * /usr/bin/certbot renew --post-hook "systemctl restart postfix && systemctl restart dovecot"
    

    2. Postfix 설치 및 설정



    2.1 설치 및 확인


    > yum -y install postfix
    > postconf | grep mail_version
    mail_version = 2.10.1
    

    2.2 main.cf 설정



    다시 쓰는 곳만 씁니다. 설정 항목명으로 파일내 검색을 하면 편할지도.
    > vi /etc/postfix/main.cf
    
    #メールサーバに割り当てるサブドメイン
    myhostname = mail.example.com
    #ドメイン名
    mydomain = example.com
    #メールアドレスの@以降をmydomainにする。この例だと[email protected]になる
    myorigin = $mydomain
    #外部からメールを受信できるように
    inet_interfaces = all
    #mydomain宛のメールを受信できるように
    mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
    #メールボックス形式をMaildir形式にする
    home_mailbox = Maildir/
    #自分がpostfixであることを隠す
    smtpd_banner = $myhostname ESMTP unknown
    

    다음은 파일 끝에 추가하십시오.
    > vi /etc/postfix/main.cf
    
    # SMTP認証を有効にする。知らない人の踏み台にならないように
    smtpd_sasl_auth_enable = yes
    smtpd_sasl_local_domain = $myhostname
    # 認証にDovecotを使う
    smtpd_sasl_type = dovecot
    smtpd_sasl_path = private/auth
    
    
    smtpd_recipient_restrictions =
        permit_mynetworks
        permit_sasl_authenticated
        reject_unauth_destination
    
    #受信メールサイズを10MBに制限。ここは適当に
    message_size_limit = 10485760
    
    # SSLで暗号化する
    smtpd_use_tls = yes
    # Let'sEncryptで作ったfullchainの方
    smtpd_tls_cert_file = /etc/letsencrypt/live/mail.example.com/fullchain.pem
    # Let'sEncryptで作ったprivkeyの方
    smtpd_tls_key_file = /etc/letsencrypt/live/mail.example.com/privkey.pem
    #おまじない?
    smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
    
    # 存在しないユーザ宛のメールをunknown_user@localhostに送るようにする(後述)
    local_recipient_maps =
    luser_relay = unknown_user@localhost
    

    2.3 master.cf 설정



    SMTP를 활성화합니다.
    > vi /etc/postfix/master.cf
    
    #以下の行の頭の#を消す。頑張って探してね
    smtps     inet  n       -       n       -       -       smtpd
      -o smtpd_tls_wrappermode=yes
      -o smtpd_sasl_auth_enable=yes
    tlsmgr    unix  -       -       n       1000?     1       tlsmgr
    
    -o smtpd_sasl_auth_enable=yes 는 2개 있습니다만, 코멘트 아웃을 제외하는 것은 smtps 아래에 있는 분입니다.

    2.4 SMTP 인증 설정


    > vi /etc/sasl2/smtpd.conf
    #↓この行を
    pwcheck_method: saslauthd
    #↓こうする
    pwcheck_method: auxprop
    

    2.5 Maildir 형식으로 수신 가능



    새 사용자를 만들 때 Maildir/{new,cur,tmp}라는 폴더가 자동으로 생성됩니다.useradd user1 그렇다면 /home/user1/Maildir/ 바로 아래에 폴더를 세 개 할 수 있을 것입니다.
    > mkdir -p /etc/skel/Maildir/{new,cur,tmp}
    > chmod -R 700 /etc/skel/Maildir
    

    2.6 존재하지 않는 사용자에게 보내는 메일 삭제


    main.cf 로 설정한 unknown_user 받는 메일을 파기한다.
    > echo unknown_user: /dev/null >> /etc/aliases
    > newaliases
    

    3. Dovecot 설치 및 설정



    3.1 설치 및 확인


    > yum -y install dovecot
    > dovecot --version
    2.2.10
    

    3.2 10-mail.conf 설정



    Maildir 형식으로 한다.
    > vi /etc/dovecot/conf.d/10-mail.conf
    
    mail_location = maildir:~/Maildir
    

    3.3 10-ssl.conf 설정



    SSL 사용
    > vi /etc/dovecot/conf.d/10-ssl.conf
    
    ssl = yes
    # 鍵をLet'sEncryptで取得したやつにする
    ssl_cert = </etc/letsencrypt/live/mail.example.com/fullchain.pem
    ssl_key = </etc/letsencrypt/live/mail.example.com/privkey.pem
    

    3.4 10-master.conf 설정



    SSL을 사용하지 않는 IMAP을 비활성화합니다.
    > vi /etc/dovecot/conf.d/10-master.conf
    
    # ↓の部分を
      inet_listener imap {
        #port = 143
      }
      inet_listener imaps {
        #port = 993
        #ssl = yes
      }
    # ↓のようにする
      inet_listener imap {
        port = 0
      }
      inet_listener imaps {
        port = 993
        ssl = yes
      }
    

    Postfix가 Dovecot 인증을 사용하도록 허용 (위)
    #↓の部分を
      # Postfix smtp-auth
      unix_listener /var/spool/postfix/private/auth {
        mode = 0666
      }
    
    #↓のようにする
      # Postfix smtp-auth
      unix_listener /var/spool/postfix/private/auth {
        mode = 0660
        user = postfix
        group = postfix
      }
    

    3.5 dovecot.conf 설정



    POP3을 사용하지 않고 IMAP만 사용한다.
    > vi /etc/dovecot/dovecot.conf
    
    protocols = imap
    

    4. 방화벽 설정



    SMTPs, IMAPs 통신을 허용한다.
    SMTP의 25번도 열어 두지 않으면 외부로부터 메일을 수신할 수 없는 것 같다?
    > firewall-cmd --add-service=smtp --permanent --zone=public
    > firewall-cmd --add-service=smtps --permanent --zone=public
    > firewall-cmd --add-service=imaps --pernament --zone=public
    > firewall-cmd --reload
    
    services 곳에 smtp와 smtps와 imaps가 있는지 확인한다.
    > firewall-cmd --list-all
    public (active)
      target: default
      icmp-block-inversion: no
      interfaces: eth0
      sources:
      services: dhcpv6-client ftp http https smtp imaps smtps ssh
      ports: 
      protocols:
      masquerade: no
      forward-ports:
      sourceports:
      icmp-blocks:
      rich rules:
    

    htps //w w. c 만. jp / 네토 ぉ rk / 쏘 rt / 포 rt. HTML 그리고 포트가 열려 있는지 확인합니다.

    5. 서비스 시작



    5.1 Postfix, Dovecot을 시작한다.


    > systemctl start postfix
    > systemctl start dovecot
    

    5.2 서버 시작시 자동으로 시작합니다.


    > systemctl enable postfix
    > systemctl enable dovecot
    

    5.3 시작되었는지 확인합니다.



    active (running)인지 확인합니다.
    > systemctl status postfix
    > systemctl status dovecot
    

    6. 메일 사용자 설정



    6.1 사용자 만들기



    안전을 위해 SSH 로그인은 할 수 없게 한다.
    암호는 적당하게 입력한다.
    > useradd -s /sbin/nologin test-user
    > passwd test-user
    ユーザー test のパスワードを変更。
    新しいパスワード:
    新しいパスワードを再入力してください:
    passwd: すべての認証トークンが正しく更新できました。
    

    6.2 SMTP 인증에 추가



    암호는 적당하게 입력한다. 6.1과 일치할 필요는 없다.
    > saslpasswd2 -u mail.example.com -c test-user
    Password:
    Again (for verification):
    

    추가 확인
    > sasldblistusers2
    [email protected]: userPassword
    

    7. Thunderbird 설정



    비밀번호는 6.2에서 설정한 것


    이 설정으로 테스트가 통과하면 완성입니다!


    송수신을 일단 확인해 둡시다.

    8. 결론



    잘 움직이지 않을 때는tail /var/log/maillog 로 로그를 보자. postfix 오류도 dovecot 오류도 모두 여기에 기록됩니다.

    좋은 웹페이지 즐겨찾기