Linuxシステムのユーザーベースのポストシステムを仮想ユーザーに移行しようとしています。
私が持っています
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を実行してテストします。
決心していない場合は読むのをスキップしてください:-)
Vmailをsendmail専用にします(宛先のDNSルックアップはありません)
LOCAL_CONFIG
CPvmail
FEATURE(ldap_routing)を使用して、mailRoutingAddressではなくmailHostを選択します
FEATURE(mailertable)を使用して配信方法(mailer)を選択します
郵送可能
vmail dovecot:dummy
Dovecotをローカルメーラーにしないでください-FEATURE(local_procmail、...)
Dovecotメーラー定義では、xL(ローカル)ルールではなくxSMTPルールを使用します