안전한 IMAP 이메일 서버를 설정하는 가장 간단한 방법은 무엇일까요?

안전한 IMAP 이메일 서버를 설정하는 가장 간단한 방법은 무엇일까요?

이메일 제공업체인 Google을 없애고 전용 서버에 완전한 이메일 솔루션을 설치하고 싶습니다. 문제: 설정이 가능한 한 간단하여 문제가 있을 경우 모든 것을 다시 설정하는 것이 고통스럽지 않기를 바랍니다.

전제조건

  • 컴퓨터에는 사용자 계정이 하나만 있습니다.
    • (이름 diti; 기본 이메일 [email protected]; 다른 별칭은 리디렉션되지만 이메일 클라이언트는 다른 별칭을 관리하고 그에 따라 반응할 수 있습니다)
  • MySQL을 사용하지 않는 것이 좋습니다.
    • (데이터 백업 및 복원의 경우 및 단순성을 위해 기능적인 이메일 서버를 얻기 전에 MySQL을 설치 및 보호하지 않는 것이 더 좋습니다)
  • 이메일은 외부에서 접속(IMAP, SMTP)이 가능합니다.
  • IMAP 및 SMTP 인증을 위한 SSL/TLS 암호화(저는CA인증서인증서가 중요합니까?).

저는 단순성, IMAP/SMTP 액세스, 안전한 인증이 Google을 떠나고 싶어하는 모든 사람이 원하는 '기본' 기능이라고 믿습니다. 제가 착각하고 있고 더 간단한 솔루션(예: 모든 것이 포함된 ownCloud와 유사한 솔루션)이 있다면 기꺼이 듣겠습니다.

Postfix와 Dovecot의 조합이 좋은 방법이 될 것 같습니다. 그건 그렇고, 나는 데비안을 실행하고 있습니다.

지금까지 알아본 정보는

  • 프랑스 기사설명매우완벽하고 안전한 이메일 솔루션을 설정하는 방법에 대해 자세히 설명합니다. 길고, 유지 관리가 어렵고, 백업 및 복원이 더 어렵습니다. 게다가 DNS 캐시가 필요한가요?
  • Gentoo wiki( Complete_Virtual_Mail_Server/SSL_Certificates페이지)에서는 CAcert 인증서 사용에 대해 언급하지만 이에 대해 명확하지 않으며(모든 SubjectAltName하위 도메인이 필요한가요?) Postfix를 사용하지도 않습니다(Courier가 더 어렵다고 읽었습니다).
  • 자체 호스팅에 대한 다양한 튜토리얼은 모두 다르며 자신이 수행하는 작업을 거의 설명하지 않으며(원격 액세스가 가능한 자체 호스팅 이메일은 설정이 복잡해 보이는데 왜 "인형"에 대한 설명 없이 명령 목록만 제공합니까?)

제가 올바른 질문을 하였기를 바라며, 그 질문이 너무 어리석지 않기를 바랍니다.

답변1

  • 아니요. 서버에 DNS 캐시를 설정할 필요는 없습니다. 서버~해야 한다근처 어딘가에 있는 캐싱 DNS 확인자를 사용하지만 대부분의 호스팅 회사는 이미 전체 데이터 센터에 대해 자체 확인자를 실행하고 기본적으로 이를 사용하도록 서버를 구성합니다.

  • 기본적으로 Postfix와 Dovecot은 모두 로컬 계정을 사용합니다. 라는 Linux 계정이 있는 경우 diti해당 계정으로 Dovecot에 로그인할 수 있으며 Postfix를 다음과 같이 설정할 수 있습니다.Dovecot에 대한 SMTP 로그인 확인.

  • 모든 메일을 동일한 계정으로 보내는 데 문제가 없다면 일반 별칭(예: )을 설정하여 메일을 해당 계정 으로 /etc/aliases리디렉션 할 수 있습니다 .kra@postmaster@diti

  • 모든 subjectAltName은 필요하지 않습니다. 필요한 유일한 것은 실제로 사용하려는 도메인 이름입니다.사용, 예를 들어 mail.diti.me또는 glaux.diti.me. 도메인 자체(예: )를 포함해야 하는지 잘 모르겠습니다 diti.me.


다음에서는 도메인에 이 서버를 가리키도록 구성된 MX 레코드가 이미 있다고 가정합니다. 나는 일반적으로 구성을 합리적으로 명확하게 유지하려고 노력합니다. 왜냐하면 몇 달이 지나면 항상 "이게 도대체 무슨 용도인지" 궁금해지기 때문입니다.

1.먼저 postfixdovecot-imapd패키지를 설치합니다. Postfix 구성에 대한 메시지가 표시되면 "인터넷 사이트" 옵션을 선택하고 diti.me메일 이름을 입력합니다. 이 시점에서는 이미 메일을 로 보내고 받을 수 [email protected]있으며 아마도 IMAP에 연결할 수도 있습니다.

그러나 아직 SSL이 없고 외부에서 SMTP를 통해 메일을 보내는 것을 허용하지 않으며 메일을 저장할 수 있는 정상적인 장소도 없습니다(기본값은 의 mbox 파일로 /var/mail, 이는 신뢰할 수 없고 특히 IMAP의 경우 성능이 좋지 않습니다).

2.SSL 인증서가 이미 있는 경우 이를 에 입력 /etc/ssl/private/diti.me.pem하고 개인 키를 에 입력합니다 /etc/ssl/private/diti.me.key. 정확한 위치는 실제로 중요하지 않지만 /etc/ssl/private데비안이 위치를 유지하는 곳입니다.

ssl-certPostfix와 Dovecot이 해당 파일에 액세스할 수 있도록 두 파일 모두 그룹이 소유하고 읽을 수 있는지 확인하세요 . 또한 를 사용하여 두 데몬의 계정을 해당 그룹에 추가합니다 gpasswd -a.

삼.데비안의 자동 생성된 Postfix main.cf도 약간 혼란스럽기 때문에 정리된 최소 버전을 게시하겠습니다.

# 서버정보
내도메인 = diti.me
myorigin = $mydomain
  # 다양한 다른 매개변수는 이 두 변수를 기본값으로 사용합니다.

# SMTP 서비스
smtpd_tls_security_level = 5월
smtpd_tls_cert_file = /etc/ssl/private/diti.me-mail.pem
smtpd_tls_key_file = /etc/ssl/private/diti.me-mail.key
  # 이렇게 하면 들어오는 모든 SMTP 연결에서 STARTTLS를 사용할 수 있습니다.
  # `postfix`를 `ssl-cert` 그룹에 추가해야 합니다.
  # /etc/ssl/private.conf에 있는 파일에 액세스합니다.

# 정책
mynetworks = [::1]/128, 127.0.0.0/8, [::ffff:127.0.0.0]/104
  # 이것은 "신뢰할 수 있는" 것으로 간주되고 사용할 수 있는 IP 주소를 나열합니다.
  # 외부(즉, 다른 도메인)로 메일을 보내기 위한 서버입니다. 에 의해
  # 기본적으로 "localhost"만 허용됩니다. 그 외 모든 사람은 다음 주소로만 메일을 보낼 수 있습니다.
  $mydestination의 #개 도메인이 허용됩니다.
mydestination = $mydomain, 로컬호스트
  # 모든 IP 주소에서 메일을 수락할 도메인 목록입니다.
# 배달
alias_maps = 해시:/etc/aliases
  # 이는 시스템 전체의 별칭을 유지합니다. 명시적으로 설정하는 것이 좋습니다.
  # 기본값에는 때때로 NIS가 포함되는데, 이는 말이 되지 않습니다.
수신자_구분자 = +
  # 첫 번째 '+'에서 주소의 로컬 부분을 분할하도록 접미사에 지시합니다.
  # 소위 "플러스 주소 지정": diti+foo@으로 보낸 메일이 배달됩니다.
  # diti@ 메일함으로.

Dovecot의 경우 데비안은 기본 예제 구성을 사용하며 각 옵션이 설명되어 있으면 충분합니다.

구성을 변경할 때마다 postfix reload및/또는 를 사용하여 데몬을 다시 로드하세요 doveadm reload.

4.기본적으로 Postfix는 메일을 /var/mail/$USER다음 주소로 전달합니다.m박스형식은 충분히 간단하지만(텍스트 편집기로 쉽게 볼 수 있음) 메시지를 이동하거나 "읽음" 또는 "읽지 않음"으로 표시할 때마다 전체 파일을 다시 작성해야 하기 때문에 특히 IMAP의 경우 많은 문제가 있습니다. ".

Maildir을 사용하도록 두 데몬을 모두 변경합니다. (다른 형식도 있지만 MTA, MDA, IMAP 서버 등에 특정한 경향이 있습니다. Maildir은 널리 지원됩니다.)

에서 /etc/postfix/main.cf'배달' 섹션에 다음을 추가합니다.

home_mailbox = 메일/

다음에서 동일한 경로를 사용하도록 Dovecot을 구성합니다 /etc/dovecot/conf.d/10-mail.conf.

mail_location = maildir:~/메일

5.어떤 시점에서는 Doveco에도 SSL을 사용하도록 지시해야 합니다. 관련 설정은 에 있습니다 /etc/dovecot/conf.d/10-ssl.conf. 실제로 Dovecot용 데비안 패키지는이미대부분 쓸모가 없는 자체 서명된 인증서를 사용하지만 SSL을 사용합니다. 자체 인증서를 사용하도록 구성합니다.

SSL = 예

ssl_cert = </etc/ssl/private/diti.me-mail.pem
ssl_key = </etc/ssl/private/diti.me-mail.key

6.이제 외부로 메일을 보내고 받을 수 있습니다. 보낼 수 있도록 Postfix를 구성하는 것이 여전히 필요합니다.~에서SMTP를 통해 메일 클라이언트와 연결하여 외부에서.

먼저 Postfix에 Dovecot을 사용하여 로그인을 확인하도록 지시하세요. 다음 지침은 대부분 다음에서 가져온 것입니다.Dovecot의 위키.

Dovecot은 /etc/dovecot/conf.d/10-master.confPostfix가 액세스할 수 있는 소켓을 수신해야 합니다. 기본 구성에는 이미 주석 처리된 예가 있습니다.

서비스 인증 {
    ...
    unix_listener /var/spool/postfix/private/auth {
        모드 = 0660
        사용자 = 접미사
        그룹 = 접미사
    }
    ...
}

그리고 Postfix는 그것을 사용해야 합니다 – /etc/postfix/main.cf다시 한번:

# 인증
smtpd_sasl_type = 비둘기장
smtpd_sasl_path = 개인/인증
  # 다른 가능한 유형은 Cyrus SASL 'saslauthd'의 경우 "cyrus"입니다.
  # 데몬. 여기서는 SASL 서버로 잘 작동하는 Dovecot을 선택했습니다.
  # 두 데몬 모두에 대한 인증을 처리하도록 하는 것이 더 간단합니다.

7.위의 내용은 어디에도 설정되지 않았습니다 smtpd_sasl_auth_enable. 현재 협약은~ 아니다SMTP 인증을 전역적으로 활성화하지만 tcp/25를 "서버 간" SMTP 포트로만 유지합니다. 한편, 사용자의 새 메시지는 인증이 필요한 "메일 제출" 포트인 tcp/587의 SMTP를 통해 수락됩니다. 일부 ISP는 스팸 때문에 tcp/25를 차단하기도 하지만 일반적으로 보안이 더 잘 유지되는 tcp/587을 열어 둡니다.

/etc/postfix/master.cfSASL 인증을 사용하여 에서 "제출" 포트를 활성화합니다 . 기본값에는 master.cf주석 처리를 취소해야 하는 필수 행이 이미 포함되어 있습니다.일부그중에는 여전히 제외되어야 합니다.

제출 inet n - - - - smtpd
  -o syslog_name=접미사/제출
  -o smtpd_tls_security_level=암호화
    # "제출" 포트는 선택 사항이 아닌 TLS를 요구합니다.
  -o smtpd_sasl_auth_enable=예
    # ...또한 사용자가 로그인할 수 있도록 허용합니다.
# -o smtpd_reject_unlisted_recipient=아니요
# -o smtpd_client_restrictions=$mua_client_restrictions
# -o smtpd_helo_restrictions=$mua_helo_restrictions
# -o smtpd_sender_restrictions=$mua_sender_restrictions
    # 이 네 가지 옵션은 주석 처리해 둘 수 있습니다. 활성화된 경우
    # 'main.cf'에 사용자 정의 제한 규칙을 설정해야 하지만
    # 기본 설정은 괜찮습니다.
  -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject
    # 기본 receive_restrictions는 IP 주소를 확인하고
    # $mydestination. "제출" 포트의 경우 모든 것을 허용합니다.
    # 사용자가 로그인되어 있지만 모든 익명 메일을 거부합니다.
  -o milter_macro_daemon_name=ORIGINATING
    # 나중에 DKIM 프록시 등을 설정하기로 결정한 경우 이를 통해
    # 사용자가 제출한 메일과 수신된 메일을 구별하기 위해 사용됩니다.
    # 기본 구성의 일부이므로 여기에도 포함됩니다.

이전 스타일의 "암시적 SSL" 포트(tcp/465)가 필요한 메일 클라이언트가 있는 경우 해당 행 smtps의 주석 처리를 해제할 수 있습니다 master.cf. 그렇게 하는 경우 설정을 submission포트 설정과 유사하게 유지하십시오.

8.마지막으로 을 편집하여 계정의 별칭을 설정합니다 /etc/aliases. 별칭은 postmaster기본적으로 필수입니다. 메일 서버에 문제가 있는 경우 연락 지점입니다. 포인팅 root및 기타 유사한 별칭도 좋습니다.

기본 형식은 aliases(5)에 설명되어 있습니다.

postmaster: root
admin:      root
root:       diti
kra:        diti

이 파일을 편집할 때마다 해시된 데이터베이스를 업데이트하려면 postalias또는 를 사용하세요 .newaliases/etc/aliases.db

이제 ditiPostfix와 Dovecot에 관한 한 하나의 계정이 여전히 호출되지만 보낸 메일 kra@...도 그곳으로 전달됩니다. 일부 메일 클라이언트(예: Thunderbird)는 단일 메일 서버에 대해 여러 "ID" 또는 "페르소나"를 지원하므로 다양한 "보낸 사람:" 주소 중에서 선택할 수 있습니다.

그게 다야. 나중에 procmail, 가상 도메인, SPF 및/또는 DKIM에 대한 지침을 가지고 돌아올 수도 있습니다.

관련 정보