roundcube의 필터 플러그인을 사용하기 위해 시브가 작동하도록 하기 위해 내가 뭘 잘못하고 있는지 이해하는 데 어려움을 겪고 있습니다.
나는 가이드를 따라 갔다.https://www.linode.com/docs/guides/email-with-postfix-dovecot-and-mysql/SQL 기반 가상 사용자를 사용하여 암호화된 메일 서버를 설정합니다.
Tarball에서 Roundcube를 설치했는데 필터 생성을 제외하고는 완벽하게 작동합니다. 필터를 만들려고 하면 위로 스와이프하면 서버와 통신할 수 없다는 알림이 나타납니다. 어디선가 seive와 dovecot은 아직 그다지 친구가 아니었던 것 같습니다.
둥근 큐브 부분은 이 시점에서 중요하지 않을 수 있습니다. 나는 이것에 대해 잘 알지 못하며 문제 해결을 어디서 시작해야 할지, 무엇을 찾아야 할지 모릅니다.
어떤 도움이라도 대단히 감사하겠습니다.
netstat -plnt는 dovecot 수신 포트 4190을 표시합니다. iptables -L -v -n | grep 4190은 ipv4 포트가 열려 있음을 표시합니다. dovecot -n 보고서:
# 2.2.27 (): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.4.16 ()
# OS: Linux 4.9.0-12-amd64 x86_64 Debian 9.13 ext4
auth_mechanisms = plain login
mail_location = maildir:/var/mail/vhosts/%d/%n/
mail_privileged_group = mail
managesieve_notify_capability = mailto
managesieve_sieve_capability = fileinto reject envelope encoded-character vacation subaddress comparator-i;ascii-numeric relational regex imap4flags copy include variables body enotify environment mailbox date index ihave duplicate mime foreverypart extracttext
namespace inbox {
inbox = yes
location =
mailbox Drafts {
special_use = \Drafts
}
mailbox Junk {
special_use = \Junk
}
mailbox Sent {
special_use = \Sent
}
mailbox "Sent Messages" {
special_use = \Sent
}
mailbox Trash {
special_use = \Trash
}
prefix =
}
passdb {
driver = pam
}
passdb {
args = /etc/dovecot/dovecot-sql.conf.ext
driver = sql
}
plugin {
sieve = file:~/sieve;active=~/.dovecot.sieve
}
postmaster_address = postmaster at nostalgicmail.com
protocols = imap lmtp sieve sieve
service auth-worker {
user = vmail
}
service auth {
unix_listener /var/spool/postfix/private/auth {
group = postfix
mode = 0660
user = postfix
}
unix_listener auth-userdb {
mode = 0600
user = vmail
}
user = dovecot
}
service imap-login {
inet_listener imap {
port = 0
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service lmtp {
unix_listener /var/spool/postfix/private/dovecot-lmtp {
group = postfix
mode = 0600
user = postfix
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
process_min_avail = 1
service_count = 1
}
service pop3-login {
inet_listener pop3 {
port = 0
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
ssl_cert = </etc/letsencrypt/live/nostalgicmail.com/fullchain.pem
ssl_key = # hidden, use -P to show it
userdb {
driver = passwd
}
userdb {
args = uid=vmail gid=vmail home=/var/vmail/%u
driver = static
}
protocol lmtp {
mail_plugins = " sieve"
}
protocol lda {
mail_plugins = " sieve"
}
답변1
나는 문제를 어떻게 해결했는지에 대한 이야기를 쓰고 싶었습니다. 다른 사람들에게 도움이 되기를 바라며 나중에 사용할 수 있도록 보관할 수 있는 몇 가지 새로운 정보를 나열해 보겠습니다.
디버그 로깅 및 시스템 로그 보기에 대한 게시물을 다른 곳에서 보았습니다.
정력 /etc/dovecot/conf.d/10-logging.conf
#mail_debug = no
mail_debug = yes
syslog를 종료하고 dovecot을 다시 시작한 다음 roundcube에 로그인합니다.
tail -f /var/log/syslog
서비스 비둘기장 다시 시작
~클릭,포인트,로그인 메일~
시스템 로그에서 흥미로운 것을 발견했습니다...
Jan 24 06:40:22 hwsrv-753880 systemd[1]: Started Dovecot IMAP/POP3 email server.
Jan 24 06:41:22 hwsrv-753880 dovecot: imap-login: Login: user=<[email protected]>, method=PLAIN, rip=2607:5500:3000:1385::2, lip=2607:5500:3000:1385::2, mpid=31064, TLS, session=<+Cv2vKS5xIMmB1UAMAAThQAAAAAAAAAC>
Jan 24 06:41:22 hwsrv-753880 dovecot: imap([email protected]): Debug: Effective uid=5000, gid=5000, home=/var/vmail/[email protected]
Jan 24 06:41:22 hwsrv-753880 dovecot: imap([email protected]): Debug: Home dir not found: /var/vmail/[email protected]
멋진 홈 디렉토리를 찾을 수 없다는 메시지입니다. 옆에 "디버그"라고 적혀 있는데, 이는 "디버그"가 활성화되어 있지 않으면 이 내용이 표시되지 않음을 나타냅니다. /var로 CD를 이동해 보니... 그런데 /var/vmail/이 존재하지 않습니다! 잘...
https://doc.dovecot.org/configuration_manual/mail_location/ 이것은 메일이 저장되는 위치에 대한 dovecot의 문서입니다. 또한 나에게 다음과 같이 알려줍니다.
메일함 자동 생성 1.x 시대의 Dovecot은 mail_location 설정 여부에 관계없이 자동으로 메일함을 생성합니다. 2.x에서는 mail_location이 올바르게 설정된 경우에만 자동 생성이 트리거됩니다.
SQL을 통해 가상 사용자를 사용하고 있는데 이로 인해 상황이 바뀔 수 있습니다. 나는 dovecot 문서를 연구하고 가상 사용자의 홈 디렉토리를 탐색했습니다.https://doc.dovecot.org/configuration_manual/home_directories_for_virtual_users/ 위의 올바른 설정을 염두에 두고 dovecot의 현재 유효한 설정을 살펴보고 가상 사용자 디렉터리 문서 페이지와 비교해야 했습니다.
비둘기장-n 이것은 dovecot이 실제로 사용하는 (유효한) 설정을 보여줍니다.
현재 구성에서는 문서와 일치하지 않는 위치로 메일을 보냅니다. 나는 비둘기장의 내부 구조에 대해 확신이 없었기 때문에 문서와 최대한 일치하도록 만들기로 결정했습니다. 나는 내부에서 무슨 일이 일어나고 있는지 알지 못하여 경치 좋은 길을 택했을 수도 있습니다.
mkdir /var/vmail
chown -R 5000:5000 /var/vmail 나는 사용자 UID와 GID 5000이 무엇인지 전혀 모르고 실제로 신경 쓰지 않습니다. 이것이 Dovecot이 원하는 것입니다(위의 로그를 보면 알 수 있습니다).
grep -rnw '/etc/dovecot' -e 'mail_location' 구성 파일의 바다 어디에서 변수가 설정되어 있는지 모르겠습니다. 여러 위치에 있는지도 모르기 때문에 이 grep을 사용하여 /etc/dovecot에서 mail_location 문자열이 포함된 모든 파일을 찾습니다.
/etc/dovecot/conf.d/10-mail.conf.orig:13:# path given in the mail_location setting.
/etc/dovecot/conf.d/10-mail.conf.orig:24:# mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-mail.conf.orig:25:# mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/dovecot/conf.d/10-mail.conf.orig:26:# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
/etc/dovecot/conf.d/10-mail.conf.orig:30:mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/dovecot/conf.d/10-mail.conf.orig:56: # mail_location, which is also the default for it.
/etc/dovecot/conf.d/10-mail.conf:13:# path given in the mail_location setting.
/etc/dovecot/conf.d/10-mail.conf:24:# mail_location = maildir:~/Maildir
/etc/dovecot/conf.d/10-mail.conf:25:# mail_location = mbox:~/mail:INBOX=/var/mail/%u
/etc/dovecot/conf.d/10-mail.conf:26:# mail_location = mbox:/var/mail/%d/%1n/%n:INDEX=/var/indexes/%d/%1n/%n
/etc/dovecot/conf.d/10-mail.conf:30:# ~this one is working mail_location = maildir:/var/mail/vhosts/%d/%n/
/etc/dovecot/conf.d/10-mail.conf:31:# mail_location = maildir:/var/vmail/%d/%n/mail
/etc/dovecot/conf.d/10-mail.conf:32:mail_location = maildir:/var/vmail/%u/mail
/etc/dovecot/conf.d/10-mail.conf:58: # mail_location, which is also the default for it.
/etc/dovecot/dovecot-sql.conf.ext:116:# mail - Mail location (overrides mail_location setting)
/etc/dovecot/dovecot-sql.conf.ext.orig:115:# mail - Mail location (overrides mail_location setting)
(참고로 위의 내용을 그렇게 읽으셨다면... 건너뛰십시오.
첫 번째 부분의 모든 내용을 읽는 방법은 파일 이름, 줄 번호, 해당 줄의 실제 텍스트 순서입니다. 해당 정보를 사용하여 발행할 수 있습니다. vim +24 /etc/dovecot/conf.d/10-mail.conf 수정해야 하는 파일의 위치로 이동합니다.
어디서 읽었는지는 기억나지 않지만, 내 마음 어딘가에는 dovecot이 상대 디렉토리와 전혀 잘 작동하지 않기 때문에 정확한 경로로 mail_location을 설정해야 한다는 것을 알았습니다. 변수 위의 문서 블록을 읽고 나는 mail_location = maildir:/var/vmail/%u/mail을 알아냈습니다.
dovecot을 다시 시작했는데 여전히 실행 중인 syslog tail에 표준 권한으로 생성된 찾을 수 없는 홈 디렉토리에 대한 정보가 깜박입니다. 그 후 홈 디렉토리 등이 생성됩니다. 오랜 시간 동안 마술을 시연한 후 필터 규칙을 홈 디렉토리에 복사하는 기적을 보았습니다. roundcube에 로그인했는데 모든 것이 잘 작동합니다! 나는 dubug를 다시 끄고 dovecot을 다시 시작하고 자랑스러워하며 자존심을 조금 부풀 렸습니다.
마지막으로 시브가 실제로 올바르게 구성되었습니다. Roundcube가 올바르게 구성되었습니다. Dovecot이 작동 중이며 가이드를 정확하게 따랐습니다. 마침내 문서를 꺼내어 약 한 시간 동안 조사한 결과 문제가 파일 시스템 경로와 관련되어 있음을 발견했습니다.
지침을 아무리 엄격하게 따르더라도 문서가 여전히 가장 중요하다는 것이 밝혀졌습니다. 내 생각엔 많은 사람들이 즉각적인 만족감에 너무 익숙해져서 *UNIX 시스템의 첫 번째 규칙을 망각한 것 같아요...실시간 FM