こんにちは。いつもこのサイトにはお世話になっております。
タイトルの件について悩んでいるのですが、
DomainやuserのMySQLのDBへの登録は、
Postfix Adminを使って行うんですよね?
ですが、Postfix Adminがうまく動かないのです。
Domainを新規登録しようとしても、
"そのドメインは既に存在しています!"
と出てしまいます。
ログを見てみたら、HTTPDのログに、
PHP Warning: mysql_real_escape_string(): Access denied for user 'apache'@'localhost' (using password: NO) in /var/www/html/postfixadmin/functions.inc.php on line 131, referer: http://hogehoge.hoge/postfixadmin/admin/create-domain.php
のように出ていました。
おそらくこれ(user 'apache'@'localhost' (using password: NO))が原因でSQLServerへ接続ができていないようなのですが、
config.inc.phpにはちゃんとuserとpasswordが設定してあります。
他に見落としているところがあるのでしょうか・・・
助言をいただければ幸いです。
PostfixAdminについては、MySOLのuserに
'apache'@'localhost'
を追加することにより使用出来るようになりました。
(根本的な解決にはなっていないし、セキュリティも・・・汗)
ですが、今度はPOP3での認証で詰っています。
/var/log/maillogに
Jul 7 18:07:28 *** pop3d: Connection, ip=[::ffff:**.**.***.***]
Jul 7 18:07:29 *** pop3d: chdir Maildir: No such file or directory
とでて、POP3でメールの取得ができません。。
SMTP認証はうまく行って、ちゃんと/usr/local/virtual/user@domain/new
に配送されています。
いろいろ検索して調べてみたのですが、どうもわからず、
お力を貸していただけるとありがたいです。
> PostfixAdminについては、MySOLのuserに
> 'apache'@'localhost'
> を追加することにより使用出来るようになりました。
> (根本的な解決にはなっていないし、セキュリティも・・・汗)
> ですが、今度はPOP3での認証で詰っています。
> /var/log/maillogに
> Jul 7 18:07:28 *** pop3d: Connection, ip=[::ffff:**.**.***.***]
> Jul 7 18:07:29 *** pop3d: chdir Maildir: No such file or directory
> とでて、POP3でメールの取得ができません。。
>
> SMTP認証はうまく行って、ちゃんと/usr/local/virtual/user@domain/new
> に配送されています。
pop3接続後にmysqlを使った認証が走ると思うのですが?
おやじさん、こんばんは。
> pop3接続後にmysqlを使った認証が走ると思うのですが?
/usr/lib/courier-imap/etc/pop3d
の
MAILDIRPATH=Maildir を MAILDIRPATH=user@domain(ディレクトリ名)
に変えると、認証が通り、メールも受信することが出来ました。
その時のログはこれです
/var/log/maillog
Jul 7 22:26:55 *** pop3d: Connection, ip=[::ffff:**.**.**.***]
Jul 7 22:26:56 *** pop3d: LOGIN, user=user@domain, ip=[::ffff:**.**.**.***]
Jul 7 22:26:56 *** pop3d: LOGOUT, user=user@domain, ip=[::ffff:**.**.**.***], top=0, retr=0, time=0
これで動いても全然意味無いんですよね・・・
おやじさんのところでは MAILDIRPATH=Maildir で何も問題なく
動いているのでしょうか?
また、何かログにおかしなところがあるなら指摘してください。
(MySQLを使った認証が使われると違うログが出るのかな?)
よろしくお願いします。
> > pop3接続後にmysqlを使った認証が走ると思うのですが?
>
> /usr/lib/courier-imap/etc/pop3d
> の
> MAILDIRPATH=Maildir を MAILDIRPATH=user@domain(ディレクトリ名)
> に変えると、認証が通り、メールも受信することが出来ました。
> その時のログはこれです
>
> /var/log/maillog
> Jul 7 22:26:55 *** pop3d: Connection, ip=[::ffff:**.**.**.***]
> Jul 7 22:26:56 *** pop3d: LOGIN, user=user@domain, ip=[::ffff:**.**.**.***]
> Jul 7 22:26:56 *** pop3d: LOGOUT, user=user@domain, ip=[::ffff:**.**.**.***], top=0, retr=0, time=0
>
> これで動いても全然意味無いんですよね・・・
> おやじさんのところでは MAILDIRPATH=Maildir で何も問題なく
> 動いているのでしょうか?
> また、何かログにおかしなところがあるなら指摘してください。
> (MySQLを使った認証が使われると違うログが出るのかな?)
ログは/etc/authlib/authdaemonrcのDEBUGLOGが1以上でないと出ません。
単純な話ですが、受信メールサーバのアカウント名をoyaji@mail.aconus.comのようにドメインまでチャント指定して入れてますか?
複数ドメイン対応になるので、ドメインは必須になります。
もしいやなら、/etc/authlib/authmysqlrcのDEFAULT_DOMAINを指定すれば、そのドメインだけは省略できますが、webmailやpostfixadminでの運用を考えると癖としてドメインまで含めて扱うようにした方がよいかと思います。
おやじ様の言うとおりに、
DEBUGLOGINを3にしてみてログを見てみたところ、
maildir=<null>,になっていました。
そこで、/etc/authlib/authmysqlrc を見直したところ、
MYSQL_MAILDIR_FIELD の行頭に半角スペースが・・・
おそらくこれのせいでDBのmaildirフィールドを読み出せていなかったようです。
半角スペースを削除したところ、問題なく動き出しました。
これだけのことに、合わせて半日以上費やしてしまった・・・orz
おやじ様、ご対応ありがとうございました。
ああ、今度はPHPからのMySQL接続ユーザのほう調べなきゃ・・・
> おそらくこれのせいでDBのmaildirフィールドを読み出せていなかったようです。
> 半角スペースを削除したところ、問題なく動き出しました。
> これだけのことに、合わせて半日以上費やしてしまった・・・orz
そういうものですよね。これがいやならレンタルサーバを考えるしかないですし。
> ああ、今度はPHPからのMySQL接続ユーザのほう調べなきゃ・・・
# mysql -u root -p < DATABASE_MYSQL.TXT
で作成されるのは、postfixadminというユーザです。従って、単純に、config.inc.phpでuserをapacheに変更しても駄目です。
DATABASE_MYSQL.TXTの中身を見れば、一目瞭然です。
レス遅れましてすみません。
私の言葉足らずで、伝わってなかったようです。申し訳ありません。
これは、PostfixAdminのPHPプログラムの中で、
SQL構文にするときに、特殊文字をエスケープする関数があり、
その関数がSQLServerの種類を調べるためにコネクトする時、
直前にコネクトした設定で繋ぐとのことだったらしいです。
(無ければデフォルトを使う?)
うちの環境ではそれが、apache@localhost(pass無し)
で接続するようだったので、
MySQLに無権限のapache@localhostユーザー
を登録することで解決しました。
config.inc.phpの方ではpostfixadminユーザを使うように設定していましたので、問題なく動きました。
おやじ様のご助力に感謝します。ありがとうございました。