web-dev-qa-db-ja.com

sendmailとdovecotldaを使用して仮想ユーザーにメールを配信する

Linuxシステムのユーザーベースのポストシステムを仮想ユーザーに移行しようとしています。

私が持っています

  • procmail配信付きのsendmail
  • dovecot
  • 異なるuidを持つシステムユーザー
  • roundcubeWebインターフェイス

Sendmailはユーザーのメールボックスへのすべてのメール配信を処理し、dovecotはユーザーとのpop3とimapの相互作用を処理し、すべてが魅力のように機能しています

今、私たちはActive Directoryをグローバルに実装し始めており、LDAP仮想ユーザーの前にLinuxシステムの電子メールユーザーを拒否したいと思っています。

Sendmailldap_routingを有効にしました

define(`confLDAP_DEFAULT_SPEC', `-h "10.1.0.1" -b "ou=portal,dc=univ,dc=priv" -d "cn=portal admin,ou=portal,dc=univ,dc=priv" -MLDAP_AUTH_SIMPLE -P/etc/mail/ldap_pass')dnl

LDAPROUTE_DOMAIN_FILE(`/etc/mail/ldap_route_domains')dnl

FEATURE(`ldap_routing', `null', `ldap -1 -T -v sAMAccountName -k (&(|(objectclass=user)(objectclass=group))(|(mail=%0)(proxyAddresses=smtp:%0)))',`passthru')dnl

perlスクリプトを介してLDAPユーザー用の単純なエイリアスファイルを作成しました。ファイルは最初は次のようになりました

sAMAccountName1:    vmail
sAMAccountName2:    vmail
....
sAMAccountNameN:    vmail

これを使用してdovecot-ldaを有効にしました howto

残念ながら、sendmailは実際のシステムユーザー名(私の場合は「vmail」)を-d引数として渡しますが、この構成の仮想ユーザーのsAMAccountNameではありません。

その後、エイリアスファイルを次のように変更します(これに触発されました トピック

sAMAccountName1:    "|/usr/libexec/dovecot/dovecot-lda -d sAMAccountName1"
sAMAccountName2:    "|/usr/libexec/dovecot/dovecot-lda -d sAMAccountName1"
....
sAMAccountNameN:    "|/usr/libexec/dovecot/dovecot-lda -d sAMAccountName1"

この解決策は、私が解決できないシステムの正しい問題のために失敗します。これがログメッセージです

致命的:setgid(5000(vmail)from userdb lookup)がeuid = 8(mail)、gid = 12(mail)、egid = 12(mail)で失敗しました:操作は許可されていません(このバイナリはおそらくプロセスグループをに設定して呼び出す必要があります12(メール)ではなく5000(vmail))

sendmail.cfでU = vmail:vmailで定義されたdovecot配信エージェント

Mdovecot,      P=/usr/libexec/dovecot/dovecot-lda,
           F=l59DFMPhnu,
           S=EnvFromL/HdrFromL, R=EnvToL/HdrToL,
           M=51200000,
           U=vmail:vmail,
           T=DNS/RFC822/X-Unix,
           A=/usr/libexec/dovecot/dovecot-lda -d $u

dovecot-ldaの所有者とグループは同じです

-rwxr-x--- 1 vmail vmail 28512 апр.   5  2013 /usr/libexec/dovecot/dovecot-lda

代わりにシステムユーザーメールを使用すると、vmailはすべて正常に機能し始めます。しかし、この構成は私には安全性が低いように思われ、ユーザーメールの代わりにuid> 100のユーザーvmailを使用したいと思います。

したがって、メール配信は失敗します。この問題の解決にご協力いただければ幸いです。

私はこれを自分で設定しようとしていて、あちこちでスニペットを見つけていましたが、完全なレシピではありませんでした。これが私がそれをした方法です。

FreeBSD 10.3-RELEASE、sendmail 8.15.2、dovecot2.2.29を実行しています。

仮想ユーザーファイルのユーザーが必要です。

# passwd
vmail:*:2025:2025:Dovecot Virtual Mail:/var/empty:/usr/sbin/nologin

# group
vmail:*:2025:

鳩小屋はシンプルなので、まずはそれをやってみましょう。 dovecot構成が機能していると仮定すると、少なくとも1つのuserdb設定がすでに存在します。仮想ユーザー用に新しいものを追加します。

# Virtual users
userdb {
        driver = static
        args = uid=vmail gid=vmail home=/var/vmail/%u
}

まだ持っていない場合は、静的資格情報のpassdb設定を追加します。

passdb {
        args = scheme=plain-md5 username_format=%u /usr/local/etc/dovecot/imap-passwd
        driver = passwd-file
}

/ var/vmailを作成します。

mkdir /var/vmail
chown vmail:vmail /var/vmail

また、新しい仮想ユーザーごとにディレクトリを手動で作成する場合を除いて、次を追加します。

# Virtual users config
lda_mailbox_autocreate = yes

dovecot.confへ(lda_mailbox_autocreateをオンにせず、ディレクトリが存在しない場合の症状は、EX_TEMPFAILエラーとローカルのsendmailキューでスタックしたメッセージです)。

「doveadmpw-s PLAIN-MD5」を使用して、新しい仮想ユーザーの行を追加します。

vfred:{PLAIN-MD5}912ec803b2ce49e4a541068d495ab570

Dovecotを再起動して、新しい構成を取得します。

service dovecot restart

次にsendmailに移ります。メーラーテーブルがない場合は、次のものを追加する必要があります。

FEATURE(`mailertable')dnl

sendmail.mcと:

vmail dovecot:dummy

mailertableに。これは、sendmailに* @vmailのdovecotローカル配信エージェントを使用するように指示しています。

Sendmail.mcの最後には、おそらく次のようなものがあります。

MAILER(local)dnl
MAILER(smtp)dnl

次の行に沿って何かを追加します。

dnl
dnl Dovecot virtual user delivery agent
dnl
LOCAL_CONFIG
Mdovecot,
    P=/usr/local/libexec/dovecot/dovecot-lda,
    F=l59DFMPhnu,
    S=EnvFromL/HdrFromL,
    R=EnvToL/HdrToL,
    M=51200000,
    U=vmail:vmail,
    T=DNS/RFC822/X-Unix,
    A=/usr/local/libexec/dovecot/dovecot-lda -d $u

新しいsendmail.cfを生成し、sendmailを再起動します。

service sendmail stop ; sleep 1 ; service sendmail start

(「servicesendmailrestart」はFreeBSDでは少しおかしいです)

最後に、仮想ユーザーをエイリアスファイルに追加します。

vfred: vfred@vmail

Newaliasesを実行してテストします。

1
Captain Happy
  1. 決心していない場合は読むのをスキップしてください:-)

  2. Vmailをsendmail専用にします(宛先のDNSルックアップはありません)

    LOCAL_CONFIG
    CPvmail
    
  3. FEATURE(ldap_routing)を使用して、mailRoutingAddressではなくmailHostを選択します

  4. FEATURE(mailertable)を使用して配信方法(mailer)を選択します

    郵送可能

    vmail  dovecot:dummy
    
  5. Dovecotをローカルメーラーにしないでください-FEATURE(local_procmail、...)

  6. Dovecotメーラー定義では、xL(ローカル)ルールではなくxSMTPルールを使用します

    http://wiki2.dovecot.org/LDA/Sendmail

1
AnFi