Linux(Debian 10) 시스템에서 다양한 스크립트를 통해 나 자신에게 이메일을 보내려고 합니다. 내 생각은 MTA 구성의 복잡성을 피하기 위해 Postfix와 같은 MTA 대신 Dovecot을 설치하는 것이 었습니다. 내가 원하는 것은 스크립트에서 이상한 이메일을 제거한 다음 Thunderbird를 사용하여 내 메일 서버에 연결하고 해당 이메일을 추출하는 것입니다.
그러나 나는 내 자신의 이메일 서버를 운영했고, 그 서버에서 스크립트를 보내는 방식은 /usr/sbin/sendmail
.
예를 들어, 로컬 사용자 사서함에서 이메일을 검색할 수 있도록 Dovecot을 성공적으로 설정했다고 가정합니다. POP3, Unix 스크립트에서 이러한 로컬 사서함으로 이메일을 보내는 가장 쉬운 방법(기본적으로 최소 구성)은 무엇입니까? 전체 MTA나 이상적으로는 다른 것을 설치하는 것을 피하고 싶습니다. 나는 다음과 같은 것을 원합니다:
/usr/sbin/sendmail "[email protected]" <<EOF_emailContent
(email here)
EOF_emailContent
답변1
기본적인 문제는 MTA가 없으면 이러한 사서함에 전자 메일 주소가 없다는 것입니다. 그것들은 단지 디스크에 있는 파일일 뿐입니다. Dovecot은 이메일 주소를 알 필요가 없습니다.
MTA(postfix와 같은)와 Dovecot 사이의 일반적인 배열은 MTA와 Dovecot이 모두 동일한 레이아웃을 예상하도록 구성된다는 것입니다.사서함파일 또는메일 디렉토리목차. 그러나 MTA와 Dovecot의 매핑은 매우 다릅니다.
- Dovecot은 다음을 이해합니다.사용자읽고 쓸 사서함
- MTA는 무엇을 알고 있나요?이메일 주소라우팅되는 사서함입니다.
에 전송된 이메일이 [email protected]
사용자에게 전송될 것이라고 가정할 수 있습니다. 이는 MTA가 bob의 편지함에 대한 bob
경로를 알고 있기 때문에 발생합니다 . 그런 다음 IMAP 또는 POP3를 통해 로그인 하면 Dovecot은 bob의 이메일 주소가 무엇인지 알 수 있습니다 .[email protected]
/home/bob/.mail
bob
/home/bob/.mail
...그러나 MTA는 이메일을 [email protected]
Bob의 편지함으로 라우팅할 수도 있습니다. [email protected]
Bob /home/mary/.mail
이 회사를 그만두고 그의 후임자가 그의 이메일을 받는 순간 이 올 수도 있습니다 . 그것은 전적으로 MTA가 결정하는 일입니다.
따라서 일종의 MTA 없이는 이메일을 받은 편지함으로 라우팅할 수 없습니다.
더 간단한 MTA도 있습니다. Postfix는 구성하기 매우 어렵고 실수로 MTA를 잘못 구성하여 스패머에 의해 남용되는 위험을 감수하고 싶어하는 사람은 아무도 없습니다.
U&L에 대한 또 다른 유사한 질문에 주목하겠습니다(중복이 아닌가요?). 메일을 로컬로 전달하기 위한 최소 MTA(cron용)?
직접 해보고 싶다면 maildir과 mbox 형식 모두 매우 간단합니다. maildir을 사용하는 것이 훨씬 안전합니다. maildir로 전송하는 것은 tmp
디렉터리에 쓴 다음 new
디렉터리 로 이동(이름 바꾸기)하는 것만 큼 간단합니다 .
물론 이러한 이메일은 적절한 헤더를 포함하여 형식이 잘 지정되어 있어야 합니다 From:
To:
Subject:
Date:
. 예는 에서 확인할 수 있습니다.RFC 5322
답변2
Dovecot에는 특별한 로컬 배달 에이전트가 함께 제공되므로 dovecot-lda
MTA(예: sendmail 또는 postfix) 없이 스크립트에서 로컬 Dovecot 사서함으로 직접 메일을 보낼 수 있습니다.
/usr/local/libexec/dovecot-lda -d user_name <<EOF_emailContent
(email here)
EOF_emailContent
user_name
비둘기장 구성 방법에 따라 시스템 사용자 또는 가상 사용자 중 유효한 비둘기장 사용자입니다. man dovecot-lda
더 많은 선택을 위해.
PS 실행 파일의 위치는 dovecot-lda
다를 수 있습니다. 내 FreeBSD 컴퓨터에서는 /usr/local/libexec/dovecot/dovecot-lda
.
PS2. Dovecot은 LMTP(Local Mail Transfer Protocol) 유닉스 소켓도 제공합니다. 따라서 스크립트가 SMTP를 통해 이메일을 보내도록 설계된 경우(즉, 스크립트에서 SMTP 통신을 구현한 경우) 해당 통신을 로컬 TCP 포트 25에서 dovecot 로컬 unix 도메인 소켓으로 리디렉션하여 /var/run/dovecot/lmtp
즐길 수 있습니다.