나는 스크립트에서 이메일을 보내기 위해 mailx를 사용하고 있습니다. 이 스크립트는 .service 및 .timer 파일을 사용하여 systemd에 의해 매일 실행됩니다. 테스트 목적으로 명령줄에서 보냅니다.
메일은 명령을 통해 전송됩니다.
echo "Test message - you know the drill" | mailx -r "[email protected]" -s "Test Message" [email protected]
(개인정보 보호를 위해 개인정보는 대체되었습니다)
이것은 작동합니다. 이는 나가는 메시지에 서명하는 내 게이트웨이 서버(또한 postfix)로 postfix를 통해 전달됩니다. 그런 다음 이메일은 GMail로 전달되며, GMail은 SPF 데이터와 DKIM 서명을 확인하고 내 받은편지함으로 이메일을 전달합니다.
다음과 같이 나타나는 것을 제외하면 괜찮습니다.Ubuntu <[email protected]>
동일한 방법으로 메일을 보내는 다른 서버가 있는데 모두 비슷하게 표시됩니다.
각 서버의 표시 이름을 좀 더 유용한 이름으로 변경하고 싶습니다. 예를 들어, 내가 하고 있는 일은 주소가 게이트웨이 서버로 전송될 때 주소를 조작하는 것입니다.Web Server <[email protected]>
From
나는 노력했다
echo "Test message - you know the drill" | mailx -r "Web Server [email protected]" -s "Test Message" [email protected]
그리고
echo "Test message - you know the drill" | mailx -r "Web Server <[email protected]>" -s "Test Message" [email protected]
그러나 두 경우 모두 로컬 PostFix는 보낸 사람 주소를 잃어버리고 게이트웨이 서버로 전송된 메시지의 주소는 게이트웨이 서버의 FQDN from
으로 지정됩니다. 이메일은 GMail로 전송되었지만 SPF 및 DKIM 테스트에 실패하여 무의식적으로 스팸함에 버려졌습니다. (로컬 postfix가 게이트웨이 서버의 이름을 어떻게 얻는지 모르겠습니다)[email protected]
smtp.private.example.uk
그렇다면 서버에서 서버로의 이동 후에도 유지되고 GMail에서 올바르게 표시되도록 mailx에 전달된 매개변수에 표시 이름을 어떻게 추가합니까?
Mailx 버전 3.14(GNU Mailutils) Ubuntu 22.04
PostFix에서 한 가지만 변경했습니다 main.cf
. 게이트웨이 서버에 대한 릴레이 호스트 주소를 추가했습니다.
답변1
사전 설치된 프로그램을 사용하고 postfix가 설치되어 있기를 원하므로 postfix 모드를 사용하여 전송 내용과 모양을 더 잘 제어할 수 있습니다.
sendmail -t
이 모드에서는 postfix를 MSA(Mail Submission Agent)로 사용합니다. 어쨌든 전체 mailx
헤더와 본문을 지정할 수 있으며 postfix는 이를 "있는 그대로" 보냅니다.
쉬운 방법은 을 사용하는 것입니다 echo
.
예를 들어
echo "From: My name <me@myaddress>
To: You <you@youraddress>
Subject: You'll never guess what...
This is a test!" | /usr/sbin/sendmail -t
이를 통해 헤더를 원하는 값으로 설정할 수 있습니다.
그건 지금도 변하지 않았어봉투From이므로 원래 이름이 다른 줄에 표시되므로 완벽하지는 않지만( mailx
발신자 주소가 계정 주소와 일치하지 않으면 알 수 있음) 복잡성을 피하거나 mailx
추가 메일 사용자 에이전트(MUA)가 발생할 수 있습니다. 반입되다.