개인 도메인용 이메일 서버를 설정 중입니다. 사용자(나)는 단 한 명뿐입니다. 저는 Arch에서 DigitalOcean VPS를 실행하고 있으며 어제부터 모든 것이 최신 상태였습니다.
Postfix가 설치되어 실행 중입니다. 새 주소로 이메일을 보내면 해당 이메일이 /var/spool/mail/richard
.
내 문제는 비둘기장이에요. 다음은 다음을 통해 나와 상호작용한 기록입니다 telnet
.
$ telnet microbug.uk imap
Trying 46.101.26.207...
Connected to microbug.uk.
Escape character is '^]'.
* OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE AUTH=PLAIN] Dovecot ready.
a1 login richard [password]
a1 OK [CAPABILITY IMAP4rev1 LITERAL+ SASL-IR LOGIN-REFERRALS ID ENABLE IDLE SORT SORT=DISPLAY THREAD=REFERENCES THREAD=REFS THREAD=ORDEREDSUBJECT MULTIAPPEND URL-PARTIAL CATENATE UNSELECT CHILDREN NAMESPACE UIDPLUS LIST-EXTENDED I18NLEVEL=1 CONDSTORE QRESYNC ESEARCH ESORT SEARCHRES WITHIN CONTEXT=SEARCH LIST-STATUS BINARY MOVE SPECIAL-USE] Logged in
a2 list "" "*"
* LIST () "." INBOX
a2 NO [SERVERBUG] Internal error occurred. Refer to server log for more information. [2015-06-16 20:58:30] (0.002 secs).
systemctl status dovecot
/var/spool/mail/richard
비둘기장(dovecot )이 디렉토리가 되기를 원한다는 사실을 밝힙니다 (?!):
$ systemctl status dovecot
* dovecot.service - Dovecot IMAP/POP3 email server
Loaded: loaded (/usr/lib/systemd/system/dovecot.service; enabled; vendor preset: disabled)
Active: active (running) since Tue 2015-06-16 19:23:18 UTC; 1h 40min ago
Main PID: 739 (dovecot)
CGroup: /system.slice/dovecot.service
|- 739 /usr/bin/dovecot -F
|- 740 dovecot/anvil
|-1396 dovecot/log
`-1423 dovecot/imap
Jun 16 20:47:20 server dovecot[1360]: imap-login: Login: user=<richard>, method=PLAIN, rip=86.6.26.155, lip=46.101.26.207, mpid=1365, session=<ezk7rqgYLQBWBhqb>
Jun 16 20:50:41 server dovecot[739]: master: Warning: SIGHUP received - reloading configuration
Jun 16 20:50:41 server dovecot[1360]: imap(richard): Server shutting down. in=52 out=1059
Jun 16 20:50:49 server dovecot[1396]: imap-login: Login: user=<richard>, method=PLAIN, rip=86.6.26.155, lip=46.101.26.207, mpid=1401, session=<0kquuqgYWwBWBhqb>
Jun 16 20:53:31 server dovecot[1396]: imap(richard): Error: opendir(/var/spool/mail/richard) failed: Not a directory
Jun 16 20:53:31 server dovecot[1396]: imap(richard): Error: opendir(/var/spool/mail/richard) failed: Not a directory
Jun 16 20:58:04 server dovecot[1396]: imap(richard): Connection closed in=87 out=1077
Jun 16 20:58:23 server dovecot[1396]: imap-login: Login: user=<richard>, method=PLAIN, rip=86.6.26.155, lip=46.101.26.207, mpid=1423, session=<K2y+1agY/QBWBhqb>
Jun 16 20:58:30 server dovecot[1396]: imap(richard): Error: opendir(/var/spool/mail/richard) failed: Not a directory
Jun 16 20:58:30 server dovecot[1396]: imap(richard): Error: opendir(/var/spool/mail/richard) failed: Not a directory
/var/spool/mail/richard
디렉토리를 생성하면 dovecot이 불평하는 것을 방지할 수 있지만 postfix는 메일을 보낼 수 없습니다.
postconf -n
(접미사 설정은 기본값과 다릅니다):
alias_database = $alias_maps
alias_maps = hash:/etc/postfix/aliases
command_directory = /usr/bin
compatibility_level = 2
daemon_directory = /usr/lib/postfix/bin
data_directory = /var/lib/postfix
debug_peer_level = 2
debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5
html_directory = no
inet_protocols = ipv4
mail_owner = postfix
mail_spool_directory = /var/spool/mail
mailq_path = /usr/bin/mailq
manpage_directory = /usr/share/man
meta_directory = /etc/postfix
mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain
myhostname = microbug.uk
mynetworks_style = host
myorigin = $mydomain
newaliases_path = /usr/bin/newaliases
notify_classes = bounce, data, delay, policy, protocol, resource, software
queue_directory = /var/spool/postfix
readme_directory = /usr/share/doc/postfix
sample_directory = /etc/postfix
sendmail_path = /usr/bin/sendmail
setgid_group = postdrop
shlib_directory = /usr/lib/postfix
unknown_local_recipient_reject_code = 550
doveconf -n
(Dovecot 설정은 기본값과 다릅니다):
# 2.2.18: /etc/dovecot/dovecot.conf
# OS: Linux 4.0.5-1-ARCH x86_64 ext4
disable_plaintext_auth = no
mail_location = maildir:/var/spool/mail/%u
mail_temp_dir = /
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 {
args = scheme=CRYPT username_format=%u /etc/dovecot/users
driver = passwd-file
}
protocols = imap
ssl = no
userdb {
args = username_format=%u /etc/dovecot/users
driver = passwd-file
}
어떤 도움이라도 대단히 감사하겠습니다! 필요에 따라 추가 구성을 게시할 수 있습니다.
편집: 구성 파일을 추가했습니다.
(이 구성이 안전하지 않다는 것을 알고 있지만 작동하면 SSL을 추가하겠습니다)
답변1
Maildir 대신에 Postfix가 메일박스 파일로 전달되고 있습니다.
Dovecot에서 다음과 같이 시도해 보세요.
mail_location = mbox:~/mail:INBOX=/var/mail/%u
또는 다음 명령을 사용하여 Maildir에 전달하도록 postfix를 구성하십시오.
sudo postconf -e "home_mailbox = Maildir/"
그리고 다음을 지정하여 Maildir을 사용하도록 Dovecot을 구성합니다.
mail_location = maildir:~/Maildir
Maildir 형식의 폴더와 mbox 형식의 받은 편지함을 혼합하려면 Dovecot 설명서를 확인하세요.