나는 데비안 버스터에서 실행되는 메일 postfix
서버 를 가지고 있습니다 .dovecot
mysql
지금까지는 모든 것이 잘 작동하지만 SASL 인증의 로그인 이름이 수신자 도메인의 사용자 부분과 다른 시나리오를 설정하고 싶습니다.
예:
Login name used for SASL auth: myusername
Sender email address: [email protected]
dovecot에서 로그인 이름을 변수로 사용할 수 있으므로 dovecot을 사용한 인증은 제대로 작동합니다.
하지만 postfix가 실제로 이메일을 제출하기 전에 보낸 사람 주소가 실제로 로그인한 사용자의 소유인지 확인하고 싶습니다. 따라서 다음을 추가했습니다.smtpd_sender_login_mapsmysql 테이블을 가리키는 master.cf의 제출 서비스에 대한 옵션입니다.
-o smtpd_sender_login_maps=proxy:mysql:/etc/postfix/mysql/sender-login-maps.cf
postfix의 mysql-table 매뉴얼에 따르면 (http://www.postfix.org/mysql_table.5.html), 사용 가능한 유일한 변수는 %s, %u, %d입니다. 모두 보낸 사람 주소와 관련됩니다. 즉:
%s = [email protected]
%u = sender
%d = domain.com
원래 SASL 로그인 이름('내 사용자 이름') 내 SQL 쿼리에?
답변1
실제로 이 목적에는 sasl 인증 사용자 이름에 액세스할 필요가 없다는 것을 알았습니다.
사용자 매뉴얼에 따르면 smtpd_sender_login_maps
sasl 사용자가 소유한 이메일 주소를 반환해서는 안 됩니다. 보낸 사람 이메일 주소를 소유한 sasl 사용자를 반환해야 합니다.
http://www.postfix.org/postconf.5.html#smtpd_sender_login_maps
모든 경우에 테이블 조회 결과는 "찾을 수 없음"이거나 쉼표 및/또는 공백으로 구분된 SASL 로그인 이름 목록이어야 합니다.
이러한 쿼리의 경우 sasl 사용자 이름은 변수로 필요하지 않습니다.