おやじさん、こんばんは。D.Hです。
また、質問させていただきます。
今、メールサーバーのセキュリティー強化を図っている最中です。
SMTP-AUTHを導入し、telnetで認証テストをしたのですが、
535 Error: authentication failed
となってしまいます。
telnetで、
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
と表示されているのでpostfix(2.0.3)の設定は問題ないと思います。
パスワードファイルを作成しなおしてもだめです。
/etc/sasldbのパーミッションや/usr/lib/sasl/smtpd.conf
もちゃんと設定しています。
saslはRHL7.3に入っていたのを使用しています。
saslの設定に問題があるのでしょうか?
こんばんは。
> 今、メールサーバーのセキュリティー強化を図っている最中です。
> SMTP-AUTHを導入し、telnetで認証テストをしたのですが、
> 535 Error: authentication failed
> となってしまいます。
> telnetで、
> 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
> 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
> と表示されているのでpostfix(2.0.3)の設定は問題ないと思います。
> パスワードファイルを作成しなおしてもだめです。
> /etc/sasldbのパーミッションや/usr/lib/sasl/smtpd.conf
> もちゃんと設定しています。
> saslはRHL7.3に入っていたのを使用しています。
> saslの設定に問題があるのでしょうか?
おやじのページのとおりやっているのですよね。現用機の環境は少し違いますが、バックアップでの試験では7.3+1.1.11や8.0+2.0.3でも大丈夫ですよ。但し、TLSも入っていますが、認証の前段階の話なので直接は関係ないですから。saslはRH標準のままです。
メールクライアントでも当然駄目ですよね? パスワードが長いので入力ミス等?があるといけないので一応クライアントでも試して見てはどうでしょうか?。 申し訳ありませんがよくわかりませんね。
> こんばんは。
>
> おやじのページのとおりやっているのですよね。現用機の環境は少し違いますが、バックアップでの試験では7.3+1.1.11や8.0+2.0.3でも大丈夫ですよ。但し、TLSも入っていますが、認証の前段階の話なので直接は関係ないですから。saslはRH標準のままです。
> メールクライアントでも当然駄目ですよね? パスワードが長いので入力ミス等?があるといけないので一応クライアントでも試して見てはどうでしょうか?。 申し訳ありませんがよくわかりませんね。
サーバーの設定におやじさんのサイトと本を参考にしています。
何度もクライアント(OutlookXP)で試したのですが、ユーザー名とパスワードを入力する
ダイアログが表示され認証されません。
関係ないかもしれませんが気になったことがあります。
最初telnetで、
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
と表示されず、
250-AUTH GSSAPI PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=GSSAPI PLAIN LOGIN DIGEST-MD5 CRAM-MD5
と表示されました。
多分、RHL7.3をインストール時、パッケージの追加でcylus-sasl-gssapi-1.5.24
を選択したからだと思い、これを削除したら、GSSAPIは表示されなくなりました。
telnetでちゃんとSMTP-AUTHモードで動いているのが確認でき、
クライントでユーザー名とパスワードを入力するダイアログが表示されるとなると、
あと考えられるのは、main.cfの設定がおかしいか、/etc/sasldbが読み込まれていないというくらいです。
/etc/sasldbが読み込まれているかどうかを確認する方法ってありますか?
こんばんは。
> サーバーの設定におやじさんのサイトと本を参考にしています。
> 何度もクライアント(OutlookXP)で試したのですが、ユーザー名とパスワードを入力する
> ダイアログが表示され認証されません。
> 関係ないかもしれませんが気になったことがあります。
> 最初telnetで、
> 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
> 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
> と表示されず、
> 250-AUTH GSSAPI PLAIN LOGIN DIGEST-MD5 CRAM-MD5
> 250-AUTH=GSSAPI PLAIN LOGIN DIGEST-MD5 CRAM-MD5
> と表示されました。
> 多分、RHL7.3をインストール時、パッケージの追加でcylus-sasl-gssapi-1.5.24
> を選択したからだと思い、これを削除したら、GSSAPIは表示されなくなりました。
> telnetでちゃんとSMTP-AUTHモードで動いているのが確認でき、
> クライントでユーザー名とパスワードを入力するダイアログが表示されるとなると、
> あと考えられるのは、main.cfの設定がおかしいか、/etc/sasldbが読み込まれていないというくらいです。
> /etc/sasldbが読み込まれているかどうかを確認する方法ってありますか?
おかしい時はログからですが、試しにテストアカウントで試験してみた結果です。失敗すると以下のようなログが/var/log/mail.logにでるはずです。長くなるので頭の時刻のところは削除してあります。
postfix/smtpd[16086]: connect from oyaji.acorn.zive.net[192.168.xxx.xxx]
postfix/smtpd[16086]: warning: oyaji.acorn.zive.net[192.168.xxx.xxx]: SASL LOGIN authentication failed
postfix/smtpd[16086]: disconnect from oyaji.acorn.zive.net[192.168.xxx.xxx]
おやじ殿と同じく、maillogを見て判断でしょう。
私の場合も同じ症状だったので、悩んだ結果 /etc/posfix/main.cfの allow_percent_hack=yesを
noに修正したら出来ました。
この辺は ordb使用とか設定環境によって違ってくるので一概には言えませんが、main.cfを修正すれ
ば smtp-auth認証できると思います。
--- おやじ殿へ ---
毎回レスキューしてて大変ですね、胸中お察しします。
おやじさん、U-mexさん、こんばんは。
> おやじ殿と同じく、maillogを見て判断でしょう。
> 私の場合も同じ症状だったので、悩んだ結果 /etc/posfix/main.cfの allow_percent_hack=yesを
> noに修正したら出来ました。
> この辺は ordb使用とか設定環境によって違ってくるので一概には言えませんが、main.cfを修正すれ
> ば smtp-auth認証できると思います。
maillogは、おやじさんがテストしてくれた結果と同じでした。
U-mexさんのアドバイス通りallow_percent_hack=noにしても同じでした。
linux postfix/smtpd[14857]: connect from unknown[192.168.10.2]
linux postfix/smtpd[14857]: warning: unknown[192.168.10.2]: SASL LOGIN authentication failed
linux postfix/smtpd[14857]: disconnect from unknown[192.168.10.2]
念のため、main.cfの内容を記します。
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
allow_percent_hack = no
broken_sasl_auth_clients = yes
command_directory = /usr/local/postfix/bin
config_directory = /etc/postfix
daemon_directory = /usr/local/postfix/bin
debug_peer_level = 2
home_mailbox = Maildir/
inet_interfaces = all
mail_owner = postfix
mailq_path = /usr/local/postfix/mailq
manpage_directory = /usr/local/postfix/man
mydestination = $myhostname, localhost.$mydomain $mydomain
mydomain = domain
myhostname = host.domain
mynetworks = 192.168.1.0/28, 127.0.0.0/8
myorigin = $mydomain
newaliases_path = /usr/local/postfix/newaliases
queue_directory = /var/spool/postfix
readme_directory = no
sample_directory = /etc/postfix
sendmail_path = /usr/local/postfix/sendmail
setgid_group = postdrop
smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, che
ck_relay_domains, reject
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain = $mydomain
smtpd_sasl_security_options = noanonymous
transport_maps = hash:/etc/postfix/transport
unknown_local_recipient_reject_code = 450
ネットでも色々調べて見ましたが、有効な解決策がありませんでした。
ただ、気になったのが
http://www.aritia.org/hizumi/dsl/page_04.htm
で、
(/と/var/spool/postfixが同じボリュームの場合)
# ln /etc/sasldb /var/spool/postfix/etc
シンボリックリンクでは,駄目です。ハードリンクを行います。
これは,最初にsasldbを作ったときのみで,通常は不要の処理
(/と/var/spool/postfixが違うボリュームの場合)
# cp -p /etc/sasldb /var/spool/postfix/etc
別ボリュームでハードリンクが行えない場合,コピーします。
この場合,saslpasswdを実行するたびに,コピーする必要があります。
とあります。
当方は、サーバー機にHDDを2台接続してあり、master(2G)には、/boot,swap,/var、
slave(8G)には、/,/home,/tmp,/usrとしています。
違うかもしれませんがもしかして、この構成が原因でしょうか。
上記を試そうとおもったのですが、/var/spool/postfix/etcというファイルが存在していました。
因みにその内容ですが、
search domain
nameserver 192.168.x.x
となっています。
また、参考にしている本には、Debianの場合ですが、デフォルトが/var/spool/postfix/etc
であるため、/etc/sasldbを読み込むことができす、これを解決するために、ハードリンクを
作成すれば解決でき、また、シンボリックでは上手く動作しないことがある、とあります。
これも試そうと思ったのですが、/var/spool/postfixにetcというファイルが存在するため、
作成できません。
長くなってしまいましたが、何か上記と関係あるのでしょうか?
こんばんは。
> 念のため、main.cfの内容を記します。
> alias_database = hash:/etc/aliases
> alias_maps = hash:/etc/aliases
> allow_percent_hack = no
> broken_sasl_auth_clients = yes
> command_directory = /usr/local/postfix/bin
> config_directory = /etc/postfix
> daemon_directory = /usr/local/postfix/bin
> debug_peer_level = 2
> home_mailbox = Maildir/
> inet_interfaces = all
> mail_owner = postfix
> mailq_path = /usr/local/postfix/mailq
> manpage_directory = /usr/local/postfix/man
> mydestination = $myhostname, localhost.$mydomain $mydomain
> mydomain = domain
> myhostname = host.domain
> mynetworks = 192.168.1.0/28, 127.0.0.0/8
> myorigin = $mydomain
> newaliases_path = /usr/local/postfix/newaliases
> queue_directory = /var/spool/postfix
> readme_directory = no
> sample_directory = /etc/postfix
> sendmail_path = /usr/local/postfix/sendmail
> setgid_group = postdrop
> smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, che
> ck_relay_domains, reject
> smtpd_sasl_auth_enable = yes
> smtpd_sasl_local_domain = $mydomain
> smtpd_sasl_security_options = noanonymous
> transport_maps = hash:/etc/postfix/transport
> unknown_local_recipient_reject_code = 450
デストリが違うのか、直接関係ないですがかなりおやじとはディレクトリが違いますね。
> ネットでも色々調べて見ましたが、有効な解決策がありませんでした。
> ただ、気になったのが
> http://www.aritia.org/hizumi/dsl/page_04.htm
> で、
> (/と/var/spool/postfixが同じボリュームの場合)
> # ln /etc/sasldb /var/spool/postfix/etc
> シンボリックリンクでは,駄目です。ハードリンクを行います。
> これは,最初にsasldbを作ったときのみで,通常は不要の処理
> (/と/var/spool/postfixが違うボリュームの場合)
> # cp -p /etc/sasldb /var/spool/postfix/etc
> 別ボリュームでハードリンクが行えない場合,コピーします。
> この場合,saslpasswdを実行するたびに,コピーする必要があります。
> とあります。
> 当方は、サーバー機にHDDを2台接続してあり、master(2G)には、/boot,swap,/var、
> slave(8G)には、/,/home,/tmp,/usrとしています。
> 違うかもしれませんがもしかして、この構成が原因でしょうか。
これはかなり関係しそうですね。
> 上記を試そうとおもったのですが、/var/spool/postfix/etcというファイルが存在していました。
> 因みにその内容ですが、
> search domain
> nameserver 192.168.x.x
> となっています。
内容的には、resolve.confそのもののような気がしますが。etcというファイル名も珍しいですが誰が作成したのか?因みに不思議に思いおやじのシステムを検索してみましたが、当然フォルダはありましたがファイルはありませんでした。postfixディレクトリの下にあるので、postfixが作成したか、いろいろやっているうちにD.Hさんが作成したか?作成・更新日からなにか思い当たることはありませんか?
> また、参考にしている本には、Debianの場合ですが、デフォルトが/var/spool/postfix/etc
> であるため、/etc/sasldbを読み込むことができす、これを解決するために、ハードリンクを
> 作成すれば解決でき、また、シンボリックでは上手く動作しないことがある、とあります。
> これも試そうと思ったのですが、/var/spool/postfixにetcというファイルが存在するため、
> 作成できません。
上記から、あまり関係ないファイルのような気もしますので、原因追求という意味で、etc.bakあたりにリネームして、強行してみてはどうでしょうか?
問題解決したら明確な理由がわからなら気持ち悪いので、queue_directory を/usrになるように再コンパイルしてみてはどうでしょうか?
おやじさん、こんばんは、D.Hです。
> デストリが違うのか、直接関係ないですがかなりおやじとはディレクトリが違いますね。
これには訳があります。パッケージの場合はRPM -ivh,Uvh,eでインストール、アップグレード、削除
できますが、ソースからインストールした場合、アップグレード、削除の仕方がわかりまん。
そのため、/usr/local/にディレクトリを作成し(./configure --prefixを設定)、インストールし、
アップグレードするときは、そのディレクトリを削除し、新規にインストールしています。
普通はそんなことしないと思いますが・・・。
> > ネットでも色々調べて見ましたが、有効な解決策がありませんでした。
> > ただ、気になったのが
> > http://www.aritia.org/hizumi/dsl/page_04.htm
> > で、
> > (/と/var/spool/postfixが同じボリュームの場合)
> > # ln /etc/sasldb /var/spool/postfix/etc
> > シンボリックリンクでは,駄目です。ハードリンクを行います。
> > これは,最初にsasldbを作ったときのみで,通常は不要の処理
> > (/と/var/spool/postfixが違うボリュームの場合)
> > # cp -p /etc/sasldb /var/spool/postfix/etc
> > 別ボリュームでハードリンクが行えない場合,コピーします。
> > この場合,saslpasswdを実行するたびに,コピーする必要があります。
> > とあります。
> > 当方は、サーバー機にHDDを2台接続してあり、master(2G)には、/boot,swap,/var、
> > slave(8G)には、/,/home,/tmp,/usrとしています。
> > 違うかもしれませんがもしかして、この構成が原因でしょうか。
>
> これはかなり関係しそうですね。
>
> > 上記を試そうとおもったのですが、/var/spool/postfix/etcというファイルが存在していました。
> > 因みにその内容ですが、
> > search domain
> > nameserver 192.168.x.x
> > となっています。
>
> 内容的には、resolve.confそのもののような気がしますが。etcというファイル名も珍しいですが誰が作成したのか?因みに不思議に思いおやじのシステムを検索してみましたが、当然フォルダはありましたがファイルはありませんでした。postfixディレクトリの下にあるので、postfixが作成したか、いろいろやっているうちにD.Hさんが作成したか?作成・更新日からなにか思い当たることはありませんか?
原因がわかりました。自動起動するために、/etc/rc.d/init.d/に起動スクリプトを
置いているのですが、スクリプト内容の一部が原因でした。
start() {
# Start daemons.
echo -n "Starting postfix: "
if [ ! -e /var/spool/postfix/etc/resolv.conf ]; then ・・・これが
cp -f /etc/resolv.conf /var/spool/postfix/etc ・・・原因のうようです。
fi
/usr/local/postfix/bin/postalias /etc/postfix/aliases
/usr/local/postfix/bin/postfix start 2>/dev/null 1>&2 && success || failure
一度、OSを再インストールし、posfixのインストールする際、ディレクトリをデフォルトのままで
行いました。ln /etc/sasldb /var/spool/postfix/etcは、「無効なクロスデバイスリンクです」
となり作成できなかったので、cp -p /etc/sasldb /var/spool/postfix/etcをしてテストしてみました。
結果はダメでした。
あと考えられるのは、やはり、HDD2台でmasterには、/boot,swap,/var、slaveには、/,/home,/tmp,/usr
としているのが原因でしょうかね?
こんばんわ
> U-mexさんのアドバイス通りallow_percent_hack=noにしても同じでした。
ダメでしたか、他の要因なのですね。
> 念のため、main.cfの内容を記します。
私は Vineですが、おやじ殿と同じくディレクトリが違ってますね。
コンパイルしてのインストール時、ディレクトリ指定が /usr/local/postfixにした
ためでしょうか。
> 上記を試そうとおもったのですが、/var/spool/postfix/etcというファイルが存在していました。
> 因みにその内容ですが、
> search domain
> nameserver 192.168.x.x
> となっています。
> また、参考にしている本には、Debianの場合ですが、デフォルトが/var/spool/postfix/etc
> であるため、/etc/sasldbを読み込むことができす、これを解決するために、ハードリンクを
> 作成すれば解決でき、また、シンボリックでは上手く動作しないことがある、とあります。
ちなみに私の Vineでは /var/spool/postfix/etcというディレクトリさえ存在しておらず
Debianにはあり、以下の5つのファイルがありました。
hosts, localtime, nsswitch.conf, resolv.conf, services
どうやら、Debianを起動する毎に /etcにあるファイルをコピーするようです。
おやじ殿と酷似して恐縮ですけど、etc.bakにリネームして etcディレクトリを作って
その中に sasldbをコピーしてはどうでしょうか?
U-mexさん、こんばんは、D.Hです。
> > U-mexさんのアドバイス通りallow_percent_hack=noにしても同じでした。
>
> ダメでしたか、他の要因なのですね。
>
>
> 私は Vineですが、おやじ殿と同じくディレクトリが違ってますね。
> コンパイルしてのインストール時、ディレクトリ指定が /usr/local/postfixにした
> ためでしょうか。
上のおやじさんの投稿にレスした通り、1度OSを再インストールし、postfixもデフォルトでインストール
しました。cp -p /etc/sasldb /var/spool/postfix/etcを行い、テストしてみましたが、
ダメでした。
あと考えられるとすれば、HDD2台でmasterには、/boot,swap,/var、slaveには、/,/home,/tmp,/usr
としていることくらいです。
> ちなみに私の Vineでは /var/spool/postfix/etcというディレクトリさえ存在しておらず
> Debianにはあり、以下の5つのファイルがありました。
> hosts, localtime, nsswitch.conf, resolv.conf, services
> どうやら、Debianを起動する毎に /etcにあるファイルをコピーするようです。
>
> おやじ殿と酷似して恐縮ですけど、etc.bakにリネームして etcディレクトリを作って
> その中に sasldbをコピーしてはどうでしょうか?
OSの再インストール前と後で試してみましたが、ダメでした。
おやじさん、U-mexさん、こんにちは、D.Hです。
認証に成功しました。
今まで認証に失敗していたのは、smtpd_sasl_local_domainの値とsasldblistusers
を実行した際のrealmが一致していなかったからでした。
デフォルトはsmtpd_sasl_local_domain = $myhostnameみたいです。
おやじさんは、サーバソフトが吐くメールがうまく配送されないということで、
smtpd_sasl_local_domain = $mydomainとしたのですよね。
私は、おやじさんのを参考にしてsmtpd_sasl_local_domain = $mydomainとしたのですが、
saslpasswdでホスト名を設定してました。ドメイン名を設定していればよかったのですね。
注意深くおやじさんの設定を見ると、確かにsaslpasswdでドメイン名を設定していますね。
完全に私のミスでした。お手数をおかけしました。
あと、最初にsmtp-authを導入するために、RedHatに最初から入っているsaslではなく、
ソースからインストールしたのですが、saslpasswdでパスワードの作成しようとすると、
saslpasswd: generic failureとなり何回やっても作成できませんでした。
telnetでは、
250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
とちゃんと表示されてました。何が原因でしょうか?
また前の私の投稿で、
(/と/var/spool/postfixが同じボリュームの場合)
ln /etc/sasldb /var/spool/postfix/etc
シンボリックリンクでは,駄目です。ハードリンクを行います。
これは,最初にsasldbを作ったときのみで,通常は不要の処理
(/と/var/spool/postfixが違うボリュームの場合)
# cp -p /etc/sasldb /var/spool/postfix/etc
別ボリュームでハードリンクが行えない場合,コピーします。
この場合,saslpasswdを実行するたびに,コピーする必要があります。
と書きましたが、色々調べて分かりました。
ご存知かも知れませんが、これらは、postfixをchrootで動かすときに必要な処理だそうです。
私の単純ミスだったのですが、おやじさんやU-mexさんとアドバイスや、
自分でも色々調べたりして、勉強になりました。
次は、smtp-auth+TLSやウィルス対策に挑戦しようと思います。
また分からないことがあった場合、質問させて頂くかもしれませんが、
その時はまたよろしくお願いします。
こんばんは。
> 認証に成功しました。
> 今まで認証に失敗していたのは、smtpd_sasl_local_domainの値とsasldblistusers
> を実行した際のrealmが一致していなかったからでした。
> デフォルトはsmtpd_sasl_local_domain = $myhostnameみたいです。
> おやじさんは、サーバソフトが吐くメールがうまく配送されないということで、
> smtpd_sasl_local_domain = $mydomainとしたのですよね。
> 私は、おやじさんのを参考にしてsmtpd_sasl_local_domain = $mydomainとしたのですが、
> saslpasswdでホスト名を設定してました。ドメイン名を設定していればよかったのですね。
> 注意深くおやじさんの設定を見ると、確かにsaslpasswdでドメイン名を設定していますね。
> 完全に私のミスでした。お手数をおかけしました。
おやじの書き方もまずいかも。ZiveさんはMX使うとCNAMEが使えないので、おやじ自身もホスト名とドメイン名をごちゃごちゃに書いてますね。
> あと、最初にsmtp-authを導入するために、RedHatに最初から入っているsaslではなく、
> ソースからインストールしたのですが、saslpasswdでパスワードの作成しようとすると、
> saslpasswd: generic failureとなり何回やっても作成できませんでした。
> telnetでは、
> 250-AUTH PLAIN LOGIN DIGEST-MD5 CRAM-MD5
> 250-AUTH=PLAIN LOGIN DIGEST-MD5 CRAM-MD5
> とちゃんと表示されてました。何が原因でしょうか?
おやじはRHL標準ですが、初回だけ出ましたね。sasldbが初回はないからと思ってましたが。
> 今まで認証に失敗していたのは、smtpd_sasl_local_domainの値とsasldblistusers
> を実行した際のrealmが一致していなかったからでした。
> デフォルトはsmtpd_sasl_local_domain = $myhostnameみたいです。
> おやじさんは、サーバソフトが吐くメールがうまく配送されないということで、
> smtpd_sasl_local_domain = $mydomainとしたのですよね。
> 私は、おやじさんのを参考にしてsmtpd_sasl_local_domain = $mydomainとしたのですが、
> saslpasswdでホスト名を設定してました。ドメイン名を設定していればよかったのですね。
> 注意深くおやじさんの設定を見ると、確かにsaslpasswdでドメイン名を設定していますね。
> 完全に私のミスでした。お手数をおかけしました。
確認はしていませんが、myorigin = smtpd_sasl_local_domain = saslpasswd(realm)としないとおやじが経験したroot問題やD.Hさんの問題がでるということだと思います。
こんにちわ。
成功おめでとう、よかったですね。
> 今まで認証に失敗していたのは、smtpd_sasl_local_domainの値とsasldblistusers
> を実行した際のrealmが一致していなかったからでした。
ここが一番の関門なんでしょうかね。
とにかく、smtpd_sasl_local_domainと realmを一致させる事が大前提でしょうか。
今度は smtp-auth+TLSとウィルス対策に挑戦との事ですが、私はおやじ殿と違う方法
でしましたからお役に立てないかも知れません。