
Centos6 と Centos Web パネル、Postfix を使用しています。 Roundcube でメッセージを送信したりログインしたりできます。 しかし、メッセージを受信できません。 Dovecot ログ:
9月9日 13:52:31 lda([メールアドレス]): 致命的: setuid(101) が euid=5000(vmail) で失敗しました: 操作は許可されていません (このバイナリは、プロセス ユーザーを 5000(vmail) ではなく 101 に設定して呼び出す必要があります) 次の設定についてアドバイスをお願いします:
- 最初の有効なUID
- 最後の有効なユーザーID
- 最初の有効なGID
- 最後の有効なGID
そして、どのような権限が必要なのかdovecot-lda
##
## Dovecot config file
##
listen = *
disable_plaintext_auth = no
protocols = imap pop3 lmtp sieve
auth_mechanisms = plain login
passdb {
driver = sql
args = /etc/dovecot/dovecot-mysql.conf
}
#userdb {
#driver = prefetch
#}
userdb {
driver = sql
args = /etc/dovecot/dovecot-mysql.conf
}
mail_location = maildir:/var/vmail/%d/%n
first_valid_uid = 101
#last_valid_uid = 5000
first_valid_gid = 0
#last_valid_gid = 12
mail_plugins = quota
mailbox_idle_check_interval = 30 secs
maildir_copy_with_hardlinks = yes
service imap-login {
inet_listener imap {
port = 143
}
inet_listener imaps {
port = 993
ssl = yes
}
}
service pop3-login {
inet_listener pop3 {
port = 110
}
inet_listener pop3s {
port = 995
ssl = yes
}
}
service lmtp {
unix_listener lmtp {
#mode = 0666
}
}
service imap {
vsz_limit = 256M
}
service pop3 {
}
service auth {
unix_listener auth-userdb {
mode = 0666
user = vmail
group = mail
}
# Postfix smtp-auth
unix_listener /var/spool/postfix/private/auth {
mode = 0666
user = postfix
group = postfix
}
}
service auth-worker {
}
service dict {
unix_listener dict {
mode = 0666
user = vmail
group = mail
}
}
service managesieve-login {
inet_listener sieve {
port = 4190
}
service_count = 1
process_min_avail = 0
vsz_limit = 64M
}
service managesieve {
}
ssl = yes
ssl_cert = </etc/pki/tls/certs/gog.uk.to.crt
ssl_key = </etc/pki/tls/private/gog.uk.to.key
ssl_verify_client_cert = no
ssl_ca =
lda_mailbox_autocreate = yes
lda_mailbox_autosubscribe = yes
protocol lda {
#mail_plugins = sieve
mail_plugins = quota sieve
postmaster_address = [email protected]
}
protocol imap {
mail_plugins = quota imap_quota trash
#mail_plugins = trash
imap_client_workarounds = delay-newmail
}
lmtp_save_to_detail_mailbox = yes
protocol lmtp {
mail_plugins = quota sieve
#mail_plugins = sieve
}
protocol pop3 {
mail_plugins = quota
#mail_plugins =
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
protocol sieve {
managesieve_max_line_length = 65536
managesieve_implementation_string = Dovecot Pigeonhole
managesieve_max_compile_errors = 5
}
dict {
quotadict = mysql:/etc/dovecot/dovecot-dict-quota.conf
}
plugin {
quota = dict:user::proxy::quotadict
acl = vfile:/etc/dovecot/acls
trash = /etc/dovecot/trash.conf
sieve_global_path = /var/sieve/globalfilter.sieve
sieve = ~/dovecot.sieve
sieve_dir = ~/sieve
sieve_global_dir = /var/sieve/
#sieve_extensions = +notify +imapflags
sieve_max_script_size = 1M
#sieve_max_actions = 32
#sieve_max_redirects = 4
}
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot-info.log
debug_log_path = /var/log/dovecot-debug.log
mail_debug=no
答え1
あなたも私と同じ問題に遭遇したと思います:
複数のUID
ユーザーに複数の UID を使用している場合、ほとんどの MTA では dovecot-lda を root として実行できないため、dovecot-lda の実行に問題が発生します。最善の解決策は代わりに LMTP を使用することですが、それができない場合は、この問題を回避する方法が 2 つあります。
- dovecot-lda を setuid-root にします。
- sudo を使用して、dovecot-lda の呼び出しをラップします。
ソース:https://wiki2.dovecot.org/LDA#line-100
これは、dovecot パッケージを更新するたびに私が行っていることです。
sudo chgrp dovenull /usr/lib/dovecot/deliver
sudo chmod 04750 /usr/lib/dovecot/dovecot-lda
# optional: run postqueue to deliver queued mails immediately
postqueue -f
ただし、私は Ubuntu を実行しているので、おそらく別のグループを使用する必要があります。調べるための CentOS インストールが手元にありません。
答え2
完全を期すために、同様の問題は複数の GID にも適用されます (「致命的: setresgid ...: 操作は許可されていません」のような結果になる可能性があります)。
複数の uid/gid が必要な場合は、dovecot-lda を setuid root に設定するか、sudo 経由で呼び出す必要があります。これを安全に行う方法については、LDA#multipleuids を参照してください。
ソース:https://wiki2.dovecot.org/LDA/Postfix
または、他の回答で述べたように、代わりに LMTP を使用します。