Postfix가 데이터를 Dovecot에 전달하는 방법을 이해하는 데 어려움을 겪고 있으며 다음을 수행하기 위해 최소한(배포 프로필에서 최소한의 편차)이지만 완전한 예를 찾고 있습니다.
메일을 수신하려는 도메인이 여러 개 있습니다. 나는 가상 사용자가 일반 텍스트 파일에 저장된 비밀번호를 포함하여 자신에 대한 모든 정보를 갖기를 원합니다.
따라서 Postfix 예제를 따르면
virtual_mailbox_domains = mydomain1.com, mydomain2.com, ... (or a hash)
virtual_mailbox_maps = hash:/path/to/vmailboxes
virtual_transport = lmtp:unix:private/dovecot-lmtp
가상 사서함에서 나는
[email protected] someuser
비둘기장에서 나는 할 것이다
passdb {
driver = passwd-file
args = scheme=plain-md5 username_format=%n /usr/local/etc/dovecot/users
}
userdb {
driver = passwd-file
args = username_format=%n /usr/local/etc/dovecot/users
default_fields = uid=dovecot gid=dovecot home=/home/dovecot/%u
}
그래서 Postfix가 메일을 받도록 해야 한다고 생각합니다.[이메일 보호됨], 목적지가 다음과 같은 사용자임을 알게 됩니다.사용자Dovecot에 정확하게 전달하세요. 그러나 Postfix는 항상 릴레이합니다.[이메일 보호됨]동일한 사용자를 가리키는 다른 이메일 주소가 있을 수 있으므로 확실히 내가 원하는 것이 아닙니다.
[email protected] someuser
[email protected] someuser
Dovecot이 비밀번호/사용자 데이터베이스를 참조하여 해당 디렉토리에 메시지를 채우도록 하고 싶습니다.사용자. 또한 IMAP 인증을 위해 동일한 데이터베이스를 쿼리하고 싶습니다.
마지막으로 SMTP 인증을 원합니다.사용자Postfix에 연결하여 릴레이로 사용할 수 있습니다. 내가 가지고 있는 구성을 사용하여 이 작업을 어떻게 수행합니까? 이를 위해 Postfix에 별도의 비밀번호 테이블을 설정해야 합니까, 아니면 Postfix가 어떻게든 Dovecot에 문의하여 해당 사용자가 메일을 보낼 수 있도록 허용합니까?
답변1
따라서 본질적으로 두 가지 오류가 있습니다.
첫째, virtual_mailbox_maps는 내 시나리오에 적합한 옵션이 아닙니다. 대신 virtual_alias_maps를 사용해야 합니다.
둘째, 가상 메일함의 왼쪽과 오른쪽에 이메일 주소를 제공해야 합니다. 그렇지 않으면 Postfix가 $myhostname으로 전송을 시도하지만 이는 LMTP를 통해 간단한 사용자 이름을 제공할 수 없습니다. 그렇다면 그렇다면
[email protected] [email protected]
[email protected] [email protected]
[email protected] anotheruser
처음 두 줄은 잘 작동하며 두 줄 모두에 메일을 전달합니다.[이메일 보호됨]그리고[이메일 보호됨]"라는 사용자에게[이메일 보호됨]"를 Dovecot에서 사용합니다. 유일한 차이점은 이제 인증하는 동안 다음을 사용하여 로그인해야 한다는 것입니다.[이메일 보호됨]” 뿐만 아니라 “@…”이 없는 사용자 이름도 아닙니다.
그러나 세 번째 줄은 메시지를 전달합니다.[이메일 보호됨]도착하다[이메일 보호됨], 사서함 쓰기는 Postfix에 의해 처리되며, 이 경우 LMTP가 호출되지 않습니다.
마지막으로 virtual_보다는 Relay_를 사용하는 것이 더 좋습니다. 왜냐하면 Postfix 용어로 Dovecot의 LMTP 서비스에 메일을 릴레이하는 것은 동일한 시스템에서 실행 중이더라도 다른 곳에서 릴레이하는 것과 동일하므로 Relay_option을 사용하는 것이 "더 똑똑"하기 때문입니다.
main.cf의 작업 구성은 다음과 같습니다.
relay_transport = lmtp:unix:private/dovecot-lmtp
relay_domains = mydomain1.com, mydomain2.com
virtual_alias_maps = hash:/usr/local/etc/postfix/virtualmailboxes
smtpd_sasl_type = dovecot
smtpd_sasl_path = /var/spool/postfix/private/auth
smtpd_sasl_auth_enable = yes
smtpd_tls_cert_file = /etc/ssl/servercertificate.pem
smtpd_tls_key_file = /etc/ssl/serverkey.pem
smtpd_tls_security_level = may
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3
다른 모든 옵션은 귀하의 필요에 달려 있지만 Postfix와 함께 제공되는 main.cf 예제에서는 작동하도록 다른 어떤 것도 건드리지 않았습니다.
가상 사서함:
[email protected] [email protected]
[email protected] [email protected]
[email protected] [email protected]
Dovecot에 구성된 인증 부분:
auth_debug = yes
auth_verbose = yes
auth_mechanisms = plain
passdb {
driver = passwd-file
args = scheme=plain-md5 username_format=%u /usr/local/etc/dovecot/users
}
userdb {
driver = passwd-file
args = username_format=%u /usr/local/etc/dovecot/users
default_fields = uid=dovemail gid=dovemail home=/var/mail/%u
}
/usr/local/etc/dovecot/사용자:
[email protected]:{PLAIN}yourpassword::::::
[email protected]:{PLAIN}yourpassword::::::
/usr/local/etc/dovecot/conf.d/10-master.conf는 이미 존재하는 부분이 다음과 같이 보이도록 중간 줄의 주석 처리를 제거해야 합니다.
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
mode = 0600
group = postfix
user = postfix
}
그리고 같은 파일의 또 다른 섹션은 다음과 같습니다.
unix_listener /var/spool/postfix/private/auth {
mode = 0660
user = postfix
group = postfix
}
dovemail 사용자를 생성하고 메일 디렉터리(예: /var/mail)에 대한 읽기/쓰기 권한을 부여해야 합니다.