배경... Ubuntu 20 서버의 HDD가 작동하지 않습니다. 저는 새로운 컴퓨터에 Ubuntu 20 서버를 구축하고 가능할 때마다 실패한 HDD를 새로운 RAID로 옮겼습니다.
이 움직임의 일부는 postfix/dovecot입니다. 이동된 접미사 부분이 성공하여 메일이 들어와서 올바른 메일 파일 받은 편지함에 추가되는 중입니다.
그러나 이동의 로프트 부분은 그다지 성공적이지 않았습니다. 모든 이메일은 받은 편지함에 올바르게 표시되고 Thunderbird를 사용한 메일 필터링은 작동하는 것 같지만 "하지만"이 있습니다. 그러면 메시지가 올바른 폴더로 이동되고 받은 편지함에서 사라집니다. 이동된 이메일이 포함된 편지함을 선택하면 받은 편지함을 다시 선택할 때까지 폴더에 이메일이 표시됩니다. 이동된 모든 메시지는 다시 새 메시지로 표시되지만 대상 폴더에는 여전히 이메일 사본이 남아 있습니다. 필터를 다시 실행하면 파일이 올바른 폴더로 다시 이동(복사)되어 대상 폴더에 동일한 이메일의 여러 복사본이 생성됩니다.
문제를 찾으려는 모든 노력은 문제가 받은 편지함에 있는 이메일에만 국한된다는 것을 나타냅니다.
문제는 Thunderbird에서 필터링할 때뿐만 아니라 삭제 키를 사용할 때도 분명합니다. 이메일을 삭제하는 유일한 방법은 Shift + delete를 사용하여 이메일을 삭제됨 폴더로 이동하지 않는 것입니다.
비둘기 로프트 구성
mike@wilma:/var/imap$ sudo dovecot -n
# 2.3.7.2 (3c910f64b): /etc/dovecot/dovecot.conf
# Pigeonhole version 0.5.7.2 ()
# OS: Linux 5.4.0-96-generic x86_64 Ubuntu 20.04.3 LTS ext4
# Hostname: wilma.example.com
auth_debug = yes
auth_verbose = yes
auth_verbose_passwords = plain
debug_log_path = /var/log/dovecot/debug.log
disable_plaintext_auth = no
info_log_path = /var/log/dovecot/info.log
log_path = /var/log/dovecot/warnings.log
mail_access_groups = mail
mail_debug = yes
mail_gid = mail
mail_location = mbox:/var/imap/%d/%n/mail/:INBOX=/var/virtual/%d/%n:LAYOUT=fs
mail_privileged_group = mail
mail_uid = nobody
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 = passwd
}
passdb {
args = username_format=%n /etc/virtual/%d/passwd
driver = passwd-file
}
plugin {
mail_log_events = delete undelete expunge copy mailbox_delete mailbox_rename
sieve = file:~/sieve;active=~/.dovecot.sieve
}
protocols = " imap pop3"
service auth {
unix_listener /var/spool/postfix/private/auth {
mode = 0666
}
}
service imap-postlogin {
executable = script-login /etc/dovecot/lastLogin.sh
unix_listener imap-postlogin {
user = root
}
}
service imap {
executable = imap imap-postlogin
}
ssl_cert = </etc/letsencrypt/live/Email_cert/fullchain.pem
ssl_client_ca_dir = /etc/ssl/certs
ssl_dh = # hidden, use -P to show it
ssl_key = # hidden, use -P to show it
verbose_ssl = yes
파일 시스템 스냅샷...
mike@wilma:/var/imap$ sudo find . ! -user nobody -o ! -group mail -ls
-- no output --
mike@wilma:/var/imap$ sudo ls -l example.com/mike/mail/Facebook
-rw-rw-r-- 1 nobody mail 16689445 Jan 25 11:26 example.com/mike/mail/Facebook
mike@wilma:/var/imap$ sudo ls -ld example.com/mike/mail
drwxrwxr-x 13 nobody mail 4096 Jan 25 12:03 example.com/mike/mail
mike@wilma:/var/imap$ sudo ls -ld example.com/mike
drwxrwxr-x 3 nobody mail 4096 Jan 23 21:19 example.com/mike
mike@wilma:/var/imap$ sudo ls -ld example.com
drwx-wx--x 5 nobody mail 4096 Jan 23 21:20 example.com
다른 정보가 당신에게 도움이 될지 잘 모르겠습니다
티아 마이크
이것을 시도했지만 예상한 결과를 얻지 못했습니다. 이메일이 삭제된 지 2초 후에도 계속 나타납니다...
root@wilma:/var/imap# doveadm -v -D force-resync -u [email protected] INBOX
Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm
Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message)
Debug: Skipping module doveadm_expire_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_expire_plugin.so: undefined symbol: expire_set_deinit (this is usually intentional, so just ignore this message)
Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so: undefined symbol: quota_user_module (this is usually intentional, so just ignore this message)
Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so
Debug: Skipping module doveadm_fts_lucene_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_lucene_plugin.so: undefined symbol: lucene_index_iter_deinit (this is usually intentional, so just ignore this message)
Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_user_get_language_list (this is usually intentional, so just ignore this message)
Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: mail_crypt_box_get_pvt_digests (this is usually intentional, so just ignore this message)
doveadm([email protected])<59647><>: Debug: auth-master: userdb lookup([email protected]): Started userdb lookup
doveadm([email protected])<59647><>: Debug: auth-master: conn unix:/var/run/dovecot/auth-userdb: Connecting
doveadm([email protected])<59647><>: Debug: auth-master: conn unix:/var/run/dovecot/auth-userdb: Client connected (fd=10)
doveadm([email protected])<59647><>: Debug: auth-master: userdb lookup([email protected]): auth USER input: [email protected]
doveadm([email protected])<59647><>: Debug: auth-master: userdb lookup([email protected]): Finished userdb lookup ([email protected] )
doveadm([email protected])<59647><>: Debug: Added userdb setting: plugin/=yes
doveadm([email protected]): Debug: Effective uid=65534, gid=8, home=
doveadm([email protected]): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes location=mbox:/var/imap/example.com/mike/mail/:INBOX=/var/virtual/example.com/mike:LAYOUT=fs
doveadm([email protected]): Debug: fs: root=/var/imap/example.com/mike/mail, index=, indexpvt=, control=, inbox=/var/virtual/example.com/mike, alt=
doveadm([email protected]): Debug: Mailbox INBOX: Mailbox opened because: force-resync
doveadm([email protected]): Debug: auth-master: conn unix:/var/run/dovecot/auth-userdb: Disconnected: Connection closed (fd=10)
로그 파일에는 다음 내용만 표시됩니다.
Jan 27 09:20:49 imap([email protected])<60062><0OOA3IHWZozAqAGO>: Debug: Mailbox Trash: Mailbox opened because: UID move
Jan 27 09:20:49 imap([email protected])<60062><0OOA3IHWZozAqAGO>: Debug: Mailbox INBOX: UID 229597: Opened mail because: copying
Jan 27 09:20:49 imap([email protected])<60062><0OOA3IHWZozAqAGO>: Debug: Mailbox INBOX: UID 229597: Opened mail because: full mail
이것을 시도했지만 소용이 없었습니다 ...
root@wilma:/var/imap/example.com# chmod -R o+w *
root@wilma:/var/imap/example.com# systemctl restart dovecot
또한 모든 폴더의 구독을 취소해 보았습니다. 이메일을 삭제했는데 반송됐어요. 다시 구독하고, 다시 삭제하고, 이메일이 다시 반송되었습니다.
답변1
문제는 하룻밤 사이에 사라지고 저절로 해결된 것 같습니다. 어떤 변경 사항을 적용하여 문제를 해결했는지 정확히 말할 수는 없습니다.