로컬로 메일을 배달하는 최소 MTA (cron)?


17

랩톱에서 매주 작업을 수행하는 크론을 설정했습니다. 보고 할 것이 있으면 이메일을 받고 싶습니다. 지금은 MailMail 디렉토리에서 메일을 읽을 수있는 KUA를 MUA로 사용하고 ~/.local/share/local-mail있습니다. 따라서 로컬 메일을 Maildir 구조로 해당 폴더로 배달하고 싶습니다.

sendmail인터페이스 가있는 죽은 간단한 프로그램이 이미 존재하기를 희망했습니다 (예 : echo "$REPORT" | mail -s "$SUBJECT" "$ME"작동 가능). 원격 메일 서버로 exim을 설치하거나 메일을 전달하는 것은 과도한 것으로 간주됩니다.

질문 서버에서 모든 메일을 전달의 가장 간단한 방법? 내 요구에 맞지 않는 원격 전달을 대상으로하는 것 같습니다 (현지 배송 필요). 이 오래된 젠투 스레드 는 Perl에서 오래된 스크립트를 만들었습니다. 잘 생각되고 단순한 간단한 프로그램이 반드시 있어야합니까?

어떤 추천? 아치 리눅스를 사용하고 있습니다.


MTA Arch가 기본적으로 사용하는 모든 것이 설치되어 실행되고 있다고 가정하면, 그냥 사용할 수 userX@localhost.localdomain있고 물건은 결국 끝나야합니다 /var/spool/mail/userX. 직접 확인하거나 새 계정을 만들어 MUA에 확인할 수 있습니다.
goldilocks

2
일부 인터넷 검색으로 github.com/corecode/dma 일명 Dragonfly Mail Agent로 이동했습니다.
tripleee

@goldilocks Arch 최소 배포판에는 기본적으로 MTA가 설치되어 있지 않습니다. /usr/bin/sendmail존재하지 않으며 cron 출력이에 종료됩니다 /dev/null.
Lekensteyn

@tripleee 나는 그것을 만났지만 일단 SMTP와 TLS가 언급 된 것을 무시했습니다. 언급 해 주셔서 감사합니다. 다시 살펴 보겠습니다. 포트 25에서 잘 들리지 않습니다 .
Lekensteyn

@tripleee 불행하게도, dma는 Maildir을 지원하지 않으며의 스풀 디렉토리 만 지원 /var/spool/mail합니다.
Lekensteyn

답변:


7

기존의 작은 프로그램을 찾을 수 없어서 직접 작성하기로 결정했습니다. 원래, 나는 생각해 냈습니다 :

#!/bin/bash
# Simple sendmail
# filename per spec at http://cr.yp.to/proto/maildir.html
rand=$((RANDOM % 1000))
msgname=$(date +%s).P$$R$rand.$(hostname | tr '/:' '\057\072')

# Safety measure: do not overwrite existing mail
set -o noclobber

cat > ~peter/".local/share/local-mail/inbox/new/$msgname"

스크립트를 실행하는 사용자가 "peter"가 아닌 경우를 제외하고는 효과가있었습니다. 이 아이디어의 후속작은 "작은"C 프로그램 인 femtomail 입니다. 읽어보기에서 :

femtomail-Maildir을 지원하는 최소 MDA

femtomail은 로컬 메일을위한 최소 MDA (Mail Delivery Agent)입니다. 메일은 표준 입력에서 받아 들여지고 사용자의 Maildir 상자에 놓입니다. 이 소프트웨어는 단일 사용자 컴퓨터에서 사용하기위한 것입니다.

원격 배달, 데몬 화, 발신자 확인 등은 구현되지 않으며 복잡성으로 인해 구현되지 않습니다. femtomail은 메일 소프트웨어가 없기 때문에 작성되지 않았지만 기존 소프트웨어가 너무 커서 크론 메일을 로컬 사용자에게 전달 하기에는 너무 큽니다 .

펨토 메일의 워크 플로우 :

  1. 프로세스 사용자 및 그룹을 변경하십시오.
  2. 메일 디렉토리에 고유 한 파일 이름 으로 새 파일을 작성하십시오 .
  3. Received파일에 헤더를 작성 하십시오.
  4. 표준 입력에서 파일로 데이터를 전달하십시오.
  5. 출구.

소스 코드 및 설치 지침은 https://git.lekensteyn.nl/femtomail/ 에서 확인할 수 있습니다 .


1
femtomail이 user @ localhost (또는 로컬 호스트의 호스트 이름)를 읽고 해당 사용자를 setuid하고, 홈 디렉토리 또는 표준 어딘가에 전자 메일을 쓸 수 있다면 좋을 것입니다. setuid 비트가 필요합니다.
gauteh

@gauteh 이미 고급 수준이며 단일 사용자 컴퓨터에서는 사용할 수 없습니다. 더 많은 기능은 더 큰 코드와 더 큰 버그 가능성을 의미합니다. 사용 사례는 무엇입니까?
Lekensteyn

즉, 하드 코딩 된 항목없이 사용자간에 완벽한 로컬 메일 배달 에이전트로 사용할 수 있습니다.
gauteh

@gauteh 그 사용 사례에 대해 Dovecot와 같은보다 완전한 MDA를 사용하는 것이 좋습니다. 그러나 유스 케이스를 위해 펨토 메일을 패치 할 수 있으며, 다른 사람들이 관심을 가질 경우 PR을 보낼 수도 있습니다.
Lekensteyn
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.