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が動作しており、ガイドに正確に従いました。最後に、文書を取り出して約1時間調査したところ、問題がファイルシステムパスに関連していることがわかりました。
ガイドラインにどんなに厳密に従っても、文書が依然として最も重要であることがわかった。私の考えでは、多くの人が即座の満足感に慣れているので、* UNIXシステムの最初の規則を忘れてしまったと思います。リアルタイムFM