Postfix 2.5.1を実行しているUbuntu 8.04LTSシステムがあります。そのシステムでは、SMTP AUTHはfineを実行します。 /etc/postfix/sasl/smtpd.conf
の内容は次のとおりです。
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN
SASL関連のプロパティは次のとおりです。
smtpd_sasl_type = cyrus
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
broken_sasl_auth_clients = yes
smtpd_sasl_local_domain = $myhostname
Sudo sasldblistusers2
を実行すると、次のようになります。
[email protected]: userPassword
私が言ったように、それはすべて8.04LTSシステムでうまく働きます。
しかし、私はこれをPostfix 2.9.3を実行しているUbuntu 12.04LTSシステムに移行しようとしていますが、動作させることができません。私はすべて同じことをしていますが、postfixは毎回認証エラーを出します。
/etc/sasldb2
ファイルではありません。古いシステムからファイルを引き継いでみましたが、うまくいきません。そして、私は以下を使用して新しいファイルを作成しました:
saslpasswd2 -c -u mail.mydomain.com authusername
そして、それは機能しませんが、それを古いシステムにコピーすると、[〜#〜] [〜#〜]が古いシステムで機能しますシステムは、ファイルに問題がないことを私が知っている方法です。
同様に、私はpostfixがsmtpd.conf
ファイルを見ていることを知っています。ファイルのmech_list
行にさらにメカニズムを追加すると、smtpdデーモンに接続したときに、それらの追加のメカニズムがアドバタイズされていることがわかります。そして、私がそれらを取り除くと、彼らは再び消えます。したがって、/etc/postfix/sasl/smtpd.conf
は明らかに使用されています。
私は実際のメールクライアントを使用することと、これを使ってトークンを生成した後にサーバーに手動で通信することの両方をテストしています。
Perl -MMIME::Base64 -e 'print encode_base64("\000authusername\000thePassword");'
次に:
openssl s_client -quiet -starttls smtp -connect the.newsystem.com:587
結果の会話は次のとおりです。
250 DSN
EHLO example.com
250-the.newsystem.com
250-PIPELINING
250-SIZE 20971520
250-ETRN
250-AUTH PLAIN
250-AUTH=PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN theBase64EncodedToken
535 5.7.8 Error: authentication failed: authentication failure
しかし、代わりにthe.oldsystem.com:587
に接続して同じことを行うと、次のようになります。
235 2.7.0 Authentication successful
新しいマシンでのsaslfingerの出力は次のとおりです。
# sudoh saslfinger -s
saslfinger - postfix Cyrus sasl configuration Sat Jul 21 00:24:24 EDT 2012
version: 1.0.4
mode: server-side SMTP AUTH
-- basics --
Postfix: 2.9.3
System: Ubuntu 12.04 LTS \n \l
-- smtpd is linked to --
libsasl2.so.2 => /usr/lib/i386-linux-gnu/libsasl2.so.2 (0xb76c5000)
-- active SMTP AUTH and TLS parameters for smtpd --
broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $myhostname
smtpd_sasl_path = smtpd
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = cyrus
smtpd_tls_CAfile = /etc/ssl/certs/MyCA.pem
smtpd_tls_auth_only = yes
smtpd_tls_cert_file = /etc/postfix/ssl/server.crt
smtpd_tls_key_file = /etc/postfix/ssl/server.key
smtpd_tls_loglevel = 1
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
-- listing of /usr/lib/sasl2 --
total 16
drwxr-xr-x 2 root root 4096 Jul 20 23:00 .
drwxr-xr-x 67 root root 8192 Jul 20 21:25 ..
-rw-r--r-- 1 root root 1 May 4 00:17 berkeley_db.txt
-- listing of /etc/postfix/sasl --
total 20
drwxr-xr-x 2 root root 4096 Jul 20 21:29 .
drwxr-xr-x 5 root root 4096 Jul 20 23:58 ..
-rw-r--r-- 1 root root 64 Jul 20 21:29 smtpd.conf
-- content of /etc/postfix/sasl/smtpd.conf --
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN
-- content of /etc/postfix/sasl/smtpd.conf --
pwcheck_method: auxprop
auxprop_plugin: sasldb
mech_list: PLAIN
-- active services in /etc/postfix/master.cf --
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
smtp inet n - - - - smtpd
submission inet n - - - - smtpd
-o syslog_name=postfix/submission
-o smtpd_tls_security_level=encrypt
-o smtpd_sasl_auth_enable=yes
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
-o milter_macro_daemon_name=ORIGINATING
[snipping the rest of the services]
-- mechanisms on localhost --
-- end of saslfinger output --
何が欠けている/間違っているのでしょうか?私が知る限り、すべての構成は同じですが、新しいシステムでは機能しません。
プレゼントはこちらです:
-- active services in /etc/postfix/master.cf --
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
smtp inet n - - - - smtpd
submission inet n - - - - smtpd
smtpd
ポートのsubmission
プロセスがchrootモードで実行されています(その列に-
があるため、デフォルト(yes
)が適用されます) /etc/sasldb2
が見えません。
/etc/sasldb2
を/var/spool/postfix/etc
にコピーすると、認証が正常に機能し始めました。
間違いなくchrootが理由ですが、私の場合、/var/spool/postfix/etc
へのコピーが機能しませんでした。
だから私はchrootを取り除いただけで、それは私にとってはうまくいきます。
これを行うには、/ etc/postfix/master.cfを編集する必要があります。次の行を見つけます。
smtp inet n - - - - smtpd
次のように変更します。
smtp inet n - n - - smtpd
Sasldb2ファイルをPostfixのデフォルトのchroot jailに同期させる別の方法は、ハードリンクを追加することです。
ln /etc/sasldb2 /var/spool/postfix/etc/
刑務所内からシンボリックリンクにアクセスすることはできませんが、ハードリンクにはアクセスできるため、シンボリックリンクは機能しません。これには、単にファイルをコピーするよりも利点があります。これは、後から新しいユーザーとパスワードの変更が自動的に同期され、postfixを再ロードする必要もないためです。