
저는 매일 상당한 양의 이메일을 보내야 하는 웹 플랫폼을 운영하고 있습니다. 구현 날짜에 나와 내 파트너는 서버에 Postfix를 설정하고 Swift Mailer 클래스를 사용하여 SMTP 연결을 통해 로컬 Postfix 서버에 이메일을 보내기로 결정했습니다.
이를 통해 우리는 , 와 [email protected]
같은 여러 이메일 계정을 보유하고 DKIM으로 올바르게 서명된 이메일을 보낼 수 있었습니다.[email protected]
[email protected]
내 질문은, 로컬 SMTP 연결(서버 리소스에 시간이 소요됨)을 피하고 Postfix 대기열로 보낼 메시지를 전달하는 보다 직접적인 방법으로 대체하기 위해 어떤 방식으로든 PHP를 구성할 수는 없을까요?입니다.
mail()
PHP 기능이나 Swift Mailer의 Swift_SendmailTransport
클래스를 사용하여 메시지를 Postfix 대기열에 직접 전달할 수 있다는 점을 이해했습니다 . 그렇다면 DKIM을 어떻게 보장할 수 있을까요? "FROM" 헤더를 로컬 서버의 이메일 계정으로 변경하는 것으로 충분합니까?
감사합니다.
답변1
PHP mail() 함수나 Swift Mailer의 Swift_SendmailTransport 클래스를 사용하여 메시지를 Postfix 대기열에 직접 전달할 수 있다는 점을 이해했습니다.
그건 사실이야
그렇다면 DKIM을 어떻게 보장할 수 있을까요? "FROM" 헤더를 로컬 서버의 이메일 계정으로 변경하는 것으로 충분합니까?
DKIM 서명자를 지정하지 않았으므로 설정에서 OpenDKIM을 사용한다고 가정합니다. OpenDKIM은 다음을 통해 postfix와 통합됩니다.밀터 인터페이스. smtp 의식 없이 mail() 명령으로 이메일에 서명하려면 OpenDKIM 소켓/포트도 나열되어 있는지 확인해야 합니다 non_smptd_milters
.
답변2
첫째, non_smptd_milters에 OpenDKIM이 지정되어 있고 Postfix의 main.cf에 smptd_milters가 지정되어 있는 한 PHP mail()을 통해 전송되는 보내는 메일은 여전히 서명되어 있어야 합니다. 수신된 헤더는 기본적으로 서명되지 않으며 정리를 통해 다시 작성되어야 하는 항목은 없습니다. 대체 방법을 원할 경우 Amavis 및 content_filter를 사용하여 DKIM 서명을 수행할 수 있습니다. 이는 더 많은 SMTP 세션을 의미합니다.
둘째, 메일을 메일 드롭 대기열에 넣지 않고 로컬 SMTP를 사용하는 것이 성능 오버헤드를 초래할 가능성은 거의 없습니다. milter를 호출하는 제한된 수의 postfix smtpd 데몬이 있을 수 있지만, 그것이 없어도 메일은 전송되기 전에 여전히 OpenDKIM milter를 통과해야 합니다. 예, 귀하의 PHP 스크립트는 더 빨리 완료될 것입니다. 하지만 이메일이 더 빨리 전달될지는 의문입니다. 다시 읽어볼 가치가 있을 수도 있습니다http://www.postfix.org/QSHAPE_README.html