Debian Wheezy에 접미사가 있는 DKIM을 설치하고 구성하는 방법

Debian Wheezy에 접미사가 있는 DKIM을 설치하고 구성하는 방법

2022-06-01 last update

11 minutes reading Security DNS Debian Email

소개


대부분의 메일 서버 관리자에게 스팸메일 발송자로 잘못 표시된 것은 이상하지 않다.서버의 손상 가능성을 배제하여 오류 표시는 일반적으로 다음과 같은 원인 중 하나에 의해 발생합니다.
  • 서버는 오픈 메일 중계
  • 보낸 사람 또는 서버의 IP 주소가 블랙리스트에 포함됨
  • 서버에 도메인 이름 (FQDN) 과 PTR 레코드
  • 이 완전히 제한되어 있지 않음
  • 보낸 사람 정책 프레임워크(SPF) DNS 레코드 분실 또는 구성 오류
  • DomainKeys Identified Mail(DKIM)이 구현되거나 제대로 설정되지 않았습니다.
  • 대부분의 독점 스팸메일 필터(SpamAssassin 포함)가 검사하고 있는 기본 속성입니다.좋은 메일 서버를 설정하는 데 있어서 이러한 테스트를 통과하는 것은 매우 중요하다.
    이 강좌는 OpenDKIM]: DKIM 발송자 인증 시스템의 개원 실현을 중점적으로 소개할 것이다.
    만약 독자가 SSH를 통해 서버에 접근하는 방법을 알고 있다면, Postfix와 Dovecot은 이미 설치와 설정(tutorial), 호스트 이름과 FQDN은 이미 설정(tutorial, tutorial), SPF 기록은 이미 준비되었다(tutorial).

    DKIM


    DKIM은 개인 또는 조직이 도메인 이름을 이메일과 연결할 수 있도록 하는 인터넷 표준입니다.사실 이것은 소식에 대해 책임을 져야 한다고 주장하는 방법이다.DKIM의 핵심은 비대칭 암호화 기술이다.발송자의 메일 전송 에이전트(MTA)는 전송된 모든 메일에 개인 키를 사용하여 서명합니다.수신자는 보낸 사람의 DNS 기록에서 공개 키를 검색하고 메시지 서명이 발생한 후 메시지 본문과 헤더 필드가 변경되지 않았는지 확인합니다.

    OpenDKIM 설치


    설치를 시작하기 전에 시스템 업데이트를 권장합니다.
    sudo apt-get update
    sudo apt-get dist-upgrade
    
    OpenDKIM 및 해당 종속성 설치:
    sudo apt-get install opendkim opendkim-tools
    
    다른 패키지는 의존 항목으로 나열되고 yes을 입력한 다음 Enter을 눌러 계속합니다.

    OpenDKIM 구성


    OpenDKIM을 구성하려면 여러 파일을 만들고 편집해야 합니다.
    Nano는 Digital Ocean Drops에 기본적으로 설치되어 있으므로 편집기로 사용됩니다.
  • 화살표 키 사용
  • 내비게이션
  • 변경 사항을 저장하지 않고 종료: CTRL + X을 누르고 N
  • 을 누르십시오.
  • 종료 및 변경 내용 저장: CTRL + X 키를 누른 다음 Y 키를 누른 다음 Enter 키를 누른 후
  • 키를 누릅니다.
    중요 모든 명령과 프로필에서 example.com의 모든 실례를 자신의 영역으로 대체합니다.편집한 후에 파일을 저장하는 것을 잊지 마세요.
    기본 프로파일부터 시작합니다.
    sudo nano /etc/opendkim.conf
    
    다음 줄을 conf 파일의 끝에 추가합니다. (아래는 매개 변수를 설명할 것입니다.)또는 Socket의 사용자 정의 포트 번호를 선택할 수 있습니다.다른 응용 프로그램에 사용되지 않았는지 확인하십시오.
    AutoRestart             Yes
    AutoRestartRate         10/1h
    UMask                   002
    Syslog                  yes
    SyslogSuccess           Yes
    LogWhy                  Yes
    
    Canonicalization        relaxed/simple
    
    ExternalIgnoreList      refile:/etc/opendkim/TrustedHosts
    InternalHosts           refile:/etc/opendkim/TrustedHosts
    KeyTable                refile:/etc/opendkim/KeyTable
    SigningTable            refile:/etc/opendkim/SigningTable
    
    Mode                    sv
    PidFile                 /var/run/opendkim/opendkim.pid
    SignatureAlgorithm      rsa-sha256
    
    UserID                  opendkim:opendkim
    
    Socket                  inet:[email protected]
    

  • 자동 재부팅: 실패 시 자동으로 필터 재부팅

  • AutoRestartRate: 필터의 최대 재부팅 속도를 지정합니다. 재부팅 속도가 이보다 빠르면 필터가 종료됩니다.10/1h - 최대 10회 재부팅 허용/시간

  • UMask: UserID에 정의된 사용자 그룹에 대한 모든 액세스 권한을 부여하고 다른 사용자가 파일을 읽고 실행할 수 있도록 합니다. 이 경우 Pid 파일을 만들고 수정할 수 있습니다.

  • Syslog, SyslogSuccess, *LogWhy: 이러한 매개변수는 Syslog를 호출하여 상세한 로깅을 수행합니다.

  • 규범화: 메시지 서명을 정의할 때 사용하는 규범화 방법, simple 방법은 수정을 거의 허용하지 않고, relaxed 방법은 미세한 변경을 허용한다. 예를 들어
    공백 바꾸기;relaxed/simple - 메시지 헤더는 relaxed 알고리즘 처리, 메시지 헤더는 simple 알고리즘 처리

  • ExternalIgnorList: 서버를 통해 메시지를 보낼 수 있는 외부 호스트를 인증되지 않은 서명 영역 중 하나로 지정합니다.

  • InternalHosts: 메시지를 검증하지 않고 서명해야 하는 내부 호스트 목록 정의

  • KeyTable: 서명 키에 키 이름 매핑

  • SigningTable: From: 헤더 필드의 주소에 따라 메일에 적용할 서명을 표시합니다.

  • 모드: 설명 조작 모드;이런 상황에서 밀턴은 서명자(s)와 검증자(v)로 충당한다

  • Pid 파일: 프로세스 식별 번호를 포함하는 Pid 파일의 경로

  • SignatureAlgorithm: 서명을 만들 때 사용할 서명 알고리즘 선택

  • UserID:opendkim 프로세스가 이 사용자와 그룹에서 실행됩니다.

  • Socket:milter는 여기에서 지정한 Socket을 감청하고Posfix는 이 Socket을 통해opendkim에 메시지를 보내서 서명하고 검증합니다.[email protected] 정의 탐지 localhost 포트 12301의 TCP 소켓
  • 이 단순 구성은 하나 이상의 도메인에 대한 메시지 서명을 허용하기 위한 것입니다. 다른 옵션을 알고 싶으면 here으로 이동하십시오.
    milter를 Postfix에 연결하려면:
    sudo nano /etc/default/opendkim
    
    다음 행을 추가하여 사용자 정의 포트 번호를 사용할 때만 포트 번호를 편집합니다.
    SOCKET="inet:[email protected]"
    
    이 milter를 사용하려면postfix를 구성합니다.
    sudo nano /etc/postfix/main.cf
    
    포스트픽스 구성 파일에 이 두 줄이 존재하고 주석이 떨어지지 않았는지 확인하십시오.
    milter_protocol = 2
    milter_default_action = accept
    
    Postfix는 필터(Spamasasin, Clamav 등)를 사용했을 수 있습니다.다음 매개 변수가 존재하면 opendkim milter를 추가하십시오. (milter는 쉼표로 구분됩니다.) 포트 번호는 opendkim.conf과 같습니다.
    smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
    non_smtpd_milters = unix:/spamass/spamass.sock, inet:localhost:12301
    
    매개변수가 없으면 다음과 같이 정의합니다.
    smtpd_milters = inet:localhost:12301
    non_smtpd_milters = inet:localhost:12301
    
    신뢰할 수 있는 호스트, 키 테이블, 서명 테이블 및 암호화 키를 저장하는 디렉토리 구조를 만듭니다.
    sudo mkdir /etc/opendkim
    sudo mkdir /etc/opendkim/keys
    
    신뢰할 수 있는 호스트 지정:
    sudo nano /etc/opendkim/TrustedHosts
    
    이 파일을 사용하여 ExternalIgnoreListInternalHosts을 정의합니다. 이 호스트, 도메인, IP 주소에서 온 메시지가 신뢰되고 서명됩니다.
    우리의 주 프로필은 TrustedHosts을 정규 표현식 파일(refile)로 성명하기 때문에 우리는 어댑터 모드를 사용할 수 있습니다. *.example.comexample.com의 하위 영역에서 온 메시지도 루트에서 온 메시지가 아니라 신뢰할 수 있음을 의미합니다.
    다음 행을 사용자 정의하여 새로 만든 파일에 추가합니다.여러 도메인을 지정할 수 있습니다. 이전 세 줄을 편집하지 마십시오.
    127.0.0.1
    localhost
    192.168.0.1/24
    
    *.example.com
    
    #*.example.net
    #*.example.org
    
    키 테이블을 만들려면 다음과 같이 하십시오.
    sudo nano /etc/opendkim/KeyTable
    
    키 테이블에는 각 선택기/도메인 쌍과 개인 키의 경로가 포함되어 있습니다.모든 알파벳 문자열은 선택기로 사용할 수 있으며, 이 예에서 mail을 사용하면 변경할 필요가 없습니다.
    mail._domainkey.example.com example.com:mail:/etc/opendkim/keys/example.com/mail.private
    
    #mail._domainkey.example.net example.net:mail:/etc/opendkim/keys/example.net/mail.private
    #mail._domainkey.example.org example.org:mail:/etc/opendkim/keys/example.org/mail.private
    
    서명 테이블을 만들려면 다음과 같이 하십시오.
    sudo nano /etc/opendkim/SigningTable
    
    이 파일은 도메인/전자 메일 주소와 선택기를 설명하는 데 사용됩니다.
    *@example.com mail._domainkey.example.com
    
    #*@example.net mail._domainkey.example.net
    #*@example.org mail._domainkey.example.org
    

    공개 키 및 개인 키 생성


    키 디렉토리로 변경하려면 다음과 같이 하십시오.
    cd /etc/opendkim/keys
    
    도메인의 키를 저장할 별도의 폴더를 만듭니다.
    sudo mkdir example.com
    cd example.com
    
    키 생성:
    sudo opendkim-genkey -s mail -d example.com
    
    -s 지정선택기, -d 지정역, 이 명령은 두 개의 파일을 만들 것입니다. mail.private은 우리의 개인 키입니다. mail.txt은 공개 키를 포함합니다.
    개인 키 소유자를 opendkim으로 변경합니다.
    sudo chown opendkim:opendkim mail.private
    

    도메인의 DNS 레코드에 공개 키 추가

    mail.txt 열기:
    sudo nano -$ mail.txt
    
    공개 키는 p 매개 변수에 의해 정의됩니다.다음 예시 키를 사용하지 마십시오. 예시일 뿐, 서버에서 작동하지 않습니다.
    mail._domainkey IN TXT "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB" ; ----- DKIM key mail for example.com
    
    이 키를 복사하여 도메인의 DNS 항목에 TXT 레코드를 추가합니다.
    Name: mail._domainkey.example.com.
    
    Text: "v=DKIM1; k=rsa; p=MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQC5N3lnvvrYgPCRSoqn+awTpE+iGYcKBPpo8HHbcFfCIIV10Hwo4PhCoGZSaKVHOjDm4yefKXhQjM7iKzEPuBatE7O47hAx1CJpNuIdLxhILSbEmbMxJrJAG0HZVn8z6EAoOHZNaPHmK2h4UUrjOG8zA5BHfzJf7tGwI+K619fFUwIDAQAB"
    


    DNS 변경은 전파하는 데 몇 시간이 걸릴 수 있습니다.
    Postfix 및 OpenDKIM 재부팅:
    sudo service postfix restart
    sudo service opendkim restart
    
    축하메일 서버에 DKIM을 성공적으로 구성했습니다![email protected]에 빈 이메일을 보내서 구성을 테스트하고 답변을 받을 수 있습니다.만약 모든 것이 정상이라면, 당신은 DKIM check: pass에서 Summary of Results을 보셔야 합니다.
    ==========================================================
    Summary of Results
    ==========================================================
    SPF check:          pass
    DomainKeys check:   neutral
    DKIM check:         pass
    Sender-ID check:    pass
    SpamAssassin check: ham
    
    또는 사용자가 제어하는 Gmail 주소로 메일을 보내서 Gmail 받은 편지함에서 받은 이메일의 제목을 볼 수 있습니다. dkim=pass 제목 필드에 Authentication-Results이 표시되어야 합니다.
    Authentication-Results: mx.google.com;
           spf=pass (google.com: domain of [email protected] designates --- as permitted sender) [email protected];
           dkim=pass [email protected];
    
    제출자: P. Sebastian