답변:
procmail의 일부인 formail (아마도 시스템에서 이미 사용 가능할 수 있음)은 메일 함을 가져 와서 메시지로 분할 한 후 각각에서 명령을 실행할 수 있습니다. 매뉴얼 페이지에서 :
-s The input will be split up into separate mail messages, and piped
into a program one by one (a new program is started for every
part). -s has to be the last option specified, the first argument
following it is expected to be the name of a program, any other
arguments will be passed along to it. If you omit the program,
then formail will simply concatenate the split mails on stdout
again. See FILENO.
그래서 당신은 내가 원하는 생각을 할 수 있습니다 :
formail -s /usr/sbin/sendmail -oi -t < /var/mail/root
ls /var/mail
; formail -s / usr / sbin / sendmail -oi $ foo <./$foo; done"과 같이 각 파일을 루프하여 로컬로 전달해야합니다 ..
/ var / spool / mail / xxx unix 메일 함 파일은 메일 메시지가 순서대로 유지되는 간단한 텍스트 파일입니다. 각 메일 메시지는 발신자와 수신 날짜가 포함 된 "보낸 사람"줄 (메타는 메시지의 일부가 아님)로 시작한 다음 메일 헤더를받은 다음 메일 본문을받습니다.
기본적으로 이러한 From 라인을 감지하는 파일을 반복하고 모든 메시지를 추출 한 다음 cpan에서 python smtp 모듈 또는 perl Net :: SMTP 모듈과 같은 도구를 사용하여 보낼 수 있습니다.
대상이 다른 로컬 사서함 인 경우 메시지 (보낸 사람 줄 포함)를 추가 할 수 있습니다. 루트를 대상으로하는 메시지를받지 않아도 전체 루트 사서함을 다른 사서함에 추가 할 수도 있습니다.
나는 그것을하는 스크립트를 가지고 있어야하며 원하는 경우 모범을 게시 할 것입니다.
문제는 메시지의 실제 대상을 얻는 것일 수 있습니다. 루트 사서함으로 끝났을 경우 처음부터 루트를 대상으로 했었기 때문일 수 있습니다.