sendmail을 사용하여 이메일을 보낼 때 STARTTLS 사용량을 확인하는 방법은 무엇입니까?

sendmail을 사용하여 이메일을 보낼 때 STARTTLS 사용량을 확인하는 방법은 무엇입니까?

sendmail문제가 발생하면 이메일 알림을 보내도록 데비안을 실행하는 작은 VPS에 설치하고 구성했습니다 . 현재 설정은 제대로 작동하는 것 같지만 이러한 알림에는 일부 민감한 데이터가 포함될 수 있으므로 암호화하고 싶습니다.

그래서 sendmailconfig명령을 몇 번 실행하면서 sendmailSTARTTLS를 사용하도록 구성할 수 있다는 것을 알았습니다.

Everything you need to support STARTTLS (encrypted mail transmission
and user authentication via certificates) is installed and configured
but is *NOT* being used.

To enable sendmail to use STARTTLS, you need to:
1) Add this line to /etc/mail/sendmail.mc and optionally
   to /etc/mail/submit.mc:
  include(`/etc/mail/tls/starttls.m4')dnl
2) Run sendmailconfig
3) Restart sendmail

위의 설명을 적절한 구성 파일에 추가했는데 모든 것이 여전히 작동하는 것 같습니다. 하지만 매개변수가 포함된 테스트 이메일을 보내면 -v콘솔 출력은 이전 테스트와 별반 다르지 않은 것 같습니다( 050 250-STARTTLS또는 같은 문이 표시 되지만 050 >>> STARTTLSSTARTTLS를 설정하기 전에도 인쇄됩니다).

sendmail그렇다면 이메일이 실제로 암호화되었는지 어떻게 확인할 수 있나요 ?

이슈 업데이트 n.1

일부 의견에서 제안한 대로 처음 몇 시간 동안 수행한 일부 테스트의 대화 내용을 첨부하겠습니다.
본뜨다이것대화, 이것은 로컬 SMTP를 사용하여 나눈 대화입니다.

$ netcat -Cw 60 localhost 25
220 mail.MYDOMAIN.com ESMTP Sendmail 8.15.2/8.15.2/Debian-14~deb10u1; Fri, 5 Jun 2020 14:40:15 GMT; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
EHLO localhost
250-mail.MYDOMAIN.com Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-STARTTLS
250-DELIVERBY
250 HELP
MAIL FROM: <[email protected]>
250 2.1.0 <[email protected]>... Sender ok
RCPT TO: <[email protected]>
250 2.1.5 <[email protected]>... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
From: <[email protected]>         
To: <[email protected]>
Subject: Sendmail test

.
250 2.0.0 055EeF7x000698 Message accepted for delivery
QUIT
221 2.0.0 mail.MYDOMAIN.com closing connection

그러나 Outlook SMTP 서버에서 동일한 작업을 수행하려고 하면(위 알림의 수신자가 내 무료 Outlook 이메일이기 때문에) 대화가 두 번째 단계에서 중지됩니다.

$ netcat -Cw 60 smtp-mail.outlook.com 25
220 LO2P265CA0139.outlook.office365.com Microsoft ESMTP MAIL Service ready at Fri, 5 Jun 2020 14:56:40 +0000
EHLO mail.MYDOMAIN.com
250-LO2P265CA0139.outlook.office365.com Hello [MYIP]
250-SIZE 157286400
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-STARTTLS
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250 SMTPUTF8
MAIL FROM: <[email protected]>
530 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM [LO2P265CA0139.GBRP265.PROD.OUTLOOK.COM]

또한 STARTTLS 설정 전후에 전송된 일부 이메일의 헤더를 비교해 보았으며 흥미로운 차이점을 발견했습니다.

Received: from mail.MYDOMAIN.com (localhost [127.0.0.1])
    by mail.MYDOMAIN.com (8.15.2/8.15.2/Debian-14~deb10u1) with ESMTPS id 054G4khN002213
    (version=TLSv1.3 cipher=TLS_AES_256_GCM_SHA384 bits=256 verify=NOT)
    for <[email protected]>; Thu, 4 Jun 2020 16:04:46 GMT

이전 이메일 헤더에는 괄호 사이의 암호화된 정보가 없었습니다. 이것이 STARTTLS가 실제로 어떤 용도로 사용되는지에 대한 단서가 될 수 있습니까?

이슈 업데이트 n.2

도움이 된다면 sendmail테스트 이메일을 보낼 때 상세 모드로 콘솔에 출력을 추가하겠습니다.

$ echo 'Subject: Sendmail test' | sudo sendmail -v -f [email protected] [email protected]
[email protected]... Connecting to [127.0.0.1] via relay...
220 mail.MYDOMAIN.com ESMTP Sendmail 8.15.2/8.15.2/Debian-14~deb10u1; Sun, 7 Jun 2020 12:28:05 GMT; (No UCE/UBE) logging access from: localhost(OK)-localhost [127.0.0.1]
>>> EHLO mail.musnet.io
250-mail.MYDOMAIN.com Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-STARTTLS
250-DELIVERBY
250 HELP
>>> VERB
250 2.0.0 Verbose mode
>>> STARTTLS
220 2.0.0 Ready to start TLS
>>> EHLO mail.musnet.io
250-mail.MYDOMAIN.com Hello localhost [127.0.0.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-EXPN
250-VERB
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-AUTH DIGEST-MD5 CRAM-MD5
250-DELIVERBY
250 HELP
>>> VERB
250 2.0.0 Verbose mode
>>> MAIL From:<[email protected]> SIZE=23 [email protected]
250 2.1.0 <[email protected]>... Sender ok
>>> RCPT To:<[email protected]>
>>> DATA
250 2.1.5 <[email protected]>... Recipient ok
354 Enter mail, end with "." on a line by itself
>>> .
050 <[email protected]>... Connecting to outlook-com.olc.protection.outlook.com. via esmtp...
050 220 DM6NAM12FT067.mail.protection.outlook.com Microsoft ESMTP MAIL Service ready at Sun, 7 Jun 2020 12:28:05 +0000
050 >>> EHLO mail.MYDOMAIN.com
050 250-DM6NAM12FT067.mail.protection.outlook.com Hello [MYIP]
050 250-SIZE 49283072
050 250-PIPELINING
050 250-DSN
050 250-ENHANCEDSTATUSCODES
050 250-STARTTLS
050 250-8BITMIME
050 250-BINARYMIME
050 250-CHUNKING
050 250 SMTPUTF8
050 >>> STARTTLS
050 220 2.0.0 SMTP server ready
050 >>> EHLO mail.MYDOMAIN.com
050 250-DM6NAM12FT067.mail.protection.outlook.com Hello [MYIP]
050 250-SIZE 49283072
050 250-PIPELINING
050 250-DSN
050 250-ENHANCEDSTATUSCODES
050 250-8BITMIME
050 250-BINARYMIME
050 250-CHUNKING
050 250 SMTPUTF8
050 >>> MAIL From:<[email protected]> SIZE=305
050 250 2.1.0 Sender OK
050 >>> RCPT To:<[email protected]>
050 >>> DATA
050 250 2.1.5 Recipient OK
050 354 Start mail input; end with <CRLF>.<CRLF>
050 >>> .
050 250 2.6.0 <[email protected]> [InternalId=29785598229520, Hostname=DM6NAM12HT069.eop-nam12.prod.protection.outlook.com] 7377 bytes in 0.217, 33.122 KB/sec Queued mail for delivery -> 250 2.1.5
050 <[email protected]>... Sent (<[email protected]> [InternalId=29785598229520, Hostname=DM6NAM12HT069.eop-nam12.prod.protection.outlook.com] 7377 bytes in 0.217, 33.122 KB/sec Queued mail for delivery -> 250 2.1.5)
250 2.0.0 057CS569006414 Message accepted for delivery
[email protected]... Sent (057CS569006414 Message accepted for delivery)
Closing connection to [127.0.0.1]
>>> QUIT
221 2.0.0 mail.MYDOMAIN.com closing connection

답변1

SMTP를 사용하여 포트 25에서 해당 컴퓨터에 연결 nc하고 수동으로 SMTP를 사용할 수 있습니다.

Wikipedia는샘플 대화. 인터넷을 통해 연결하는 경우 인증이 필요할 수도 있습니다.

MAIL FROM일반적으로 STARTTLS를 올바르게 구성하고 이를 요구하는 경우 클라이언트가 TLS 협상 및 핸드셰이크를 완료하지 않으면 서버는 이메일 수락을 거부합니다(즉, 실패합니다).

MTA에서는 선택적 전송 암호화 구성도 허용하는 경우가 많습니다(STARTTLS가 허용되지만 필수는 아님).

답변2

귀하의 질문에 있는 세 가지 예를 언급하면,

  1. 귀하의 서버는 수신 메시지에 대해 STARTTLS를 제공하지만 이를 요구하지는 않습니다( 250-STARTTLS초기 응답에 포함됨)
  2. Exchange Online은 들어오는 메시지에 대해 STARTTLS를 제공하고 요구합니다( 250-STARTTLS초기 응답에 포함됨).
  3. 수신자가 제공한 경우( STARTTLS대화에 사용됨) 서버는 STARTTLS를 사용하여 메시지를 보냅니다.

서버가 STARTTLS를 제공하지 않는 시스템으로 전송을 시도하면 어떻게 되는지 표시되지 않습니다.

관련 정보