비둘기장: 작업이 허용되지 않습니다

비둘기장: 작업이 허용되지 않습니다

나는 centos6과 centos 웹 패널, postfix를 사용하고 있습니다. 메시지를 보내고 roundcube에 로그인할 수 있습니다. 그런데 메시지를 받을 수가 없어요. 비둘기장 로그:

9월 9일 13:52:31 lda([이메일 보호됨]): 치명적: setuid(101)가 euid=5000(vmail)로 실패했습니다. 작업이 허용되지 않습니다. (이 바이너리는 프로세스 사용자가 5000(vmail) 대신 101로 설정된 상태로 호출되어야 합니다.) 다음 설정을 알려주시기 바랍니다.

  • first_valid_uid
  • last_valid_uid
  • first_valid_gid
  • last_valid_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를 사용하는 경우 dovecot-lda를 실행하는 데 문제가 발생합니다. 대부분의 MTA에서는 dovecot-lda를 루트로 실행할 수 없기 때문입니다. 가장 좋은 해결책은 대신 LMTP를 사용하는 것입니다. 하지만 그렇게 할 수 없는 경우 이 문제를 해결하는 두 가지 방법이 있습니다.

  1. dovecot-lda setuid-root를 만듭니다.
  2. 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 루트를 설정하거나 sudo를 통해 호출해야 합니다. 이를 안전하게 수행하는 방법은 LDA#multipleuid를 참조하세요.

원천:https://wiki2.dovecot.org/LDA/Postfix

또는 다른 답변에서 언급한 대로 대신 LMTP를 사용하십시오.

관련 정보