SASL과 sender_dependent_relayhost_maps
MySQL 테이블을 사용하여 Mandrill을 통해 이메일을 릴레이하도록 Postfix를 성공적으로 설정했습니다. 따라서 다른 발신자가 자신의 Mandrill 사용자 이름과 API 키를 사용하여 Mandrill에 연결할 수 있습니다.
지금까지는 좋았지 만 전자 메일 서비스 공급자를 사용하고 메시지 봉투의 보낸 사람이 세 명의 사용자 모두에 대해 “mailer@infusionmail.com”으로 설정되어 있으며 실제 사용자의 전자 메일을 포함하는 유일한 사용자는 세 명입니다. address는 From : email 헤더에 있습니다.
엄격하게 제어되는 특정 전자 메일 주소로 보낸 메일 만 전달할 때 From : 전자 메일 헤더 를 사용하는 보안 (또는 부족)에 만족 하지만 어떻게 할 수 있는지에 대한 제안에 정말 감사합니다. From : 헤더 값을 기반으로 릴레이 호스트를 지정하십시오 . 봉투 값을 보낸 사람 필드와 동일하게 설정하는 방법이 있습니까? 아니면 다른 방법이 있습니까?
답변
postfix mailing-list의이 스레드를 기반으로 : sendmail (1)을 통해 도입 된 모든 메일에 대해 다른 전송 이 가능합니다. 불행하게도 당신은 단지 두 개의 테이블에 의존 할 수 sender_dependent_relayhost_maps
및 smtp_sasl_password_maps
. 수정이 필요합니다 master.cf
. 아이디어는 header_checks
이메일을 다른 전송으로 라우팅 하는 데 사용 됩니다. 그런 다음 각 전송에서 독립 자격 증명과 릴레이 호스트를 사용하는 smtp 클라이언트를 정의합니다.
먼저 main.cf 및 pcre 테이블에서 header_checks를 정의하십시오.
#main.cf
header_checks = pcre:/etc/postfix/header_dependent_relay
#/etc/postfix/header_dependent_relay
/^From:.*specialsender1\@example\.com/ smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/ smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/ smtp3:[host3.example.com]
좋습니다. 이제 master.cf 에서 전송을 설정했습니다 smtp1
.smtp2
smtp3
#master.cf
smtp1 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp1.relay
smtp2 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp2.relay
smtp3 unix - - - - 10 smtp
-o smtp_sasl_password_maps=hash:/etc/postfix/smtp3.relay
파일의 smtpX.relay
내용이 비슷합니다 (예 :
[hostX.example.com] userX:passwordX
기권:
- 해시 테이블
smtp_sasl_password_maps
은 단지 예일뿐입니다. mysql 테이블로 바꿀 수 있습니다. - header_checks의 pcre 테이블을 MySQL의 SELECT 및 REGEXP 조합으로 바꿀 수도 있습니다. 그러나 postfix가 모든 헤더 행에 대해 MySQL에 도달하므로 데이터베이스가 종료 될 수 있습니다
답변
이것은 한 번의 변경으로 나를 위해 일했습니다. action “FILTER”를 header_dependent_relay 파일에 추가해야 합니다.
#/etc/postfix/header_dependent_relay
/^From:.*specialsender1\@example\.com/ FILTER smtp1:[host1.example.com]
/^From:.*specialsender2\@example\.com/ FILTER smtp2:[host2.example.com]
/^From:.*specialsender3\@example\.com/ FILTER smtp3:[host3.example.com]