dovecot + postfix + mysql を使用してメールサーバーを設定しましたが、サーバー(Ubuntuサーバー)で正常に実行されました。しかし、先週は正常に動作しなくなりました。メールは送信しません。 telnet localhost smtp
に接続しようとすると正常に接続しますが、mail from:<[email protected]>
を実行してEnterキーを押すとハングしますが、何も起こりません。
/var/log/mail.log
ファイルを確認したところ、おそらく(99%)MySQLサーバーに接続しようとしているときの問題がpostfixにあることがわかりました。以下のログファイルを見ると、Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
と書かれていることがわかります。
Nov 14 21:54:36 ns1 dovecot: dovecot: Killed with signal 15 (by pid=7731 uid=0 code=kill)
Nov 14 21:54:36 ns1 dovecot: Dovecot v1.2.9 starting up (core dumps disabled)
Nov 14 21:54:36 ns1 dovecot: auth-worker(default): mysql: Connected to localhost (mailserver)
Nov 14 21:54:44 ns1 postfix/postfix-script[7753]: refreshing the Postfix mail system
Nov 14 21:54:44 ns1 postfix/master[1670]: reload -- version 2.7.0, configuration /etc/postfix
Nov 14 21:54:52 ns1 postfix/trivial-rewrite[7759]: warning: connect to mysql server localhost: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Nov 14 21:54:52 ns1 postfix/trivial-rewrite[7759]: fatal: mysql:/etc/postfix/mysql-virtual-alias-maps.cf(0,lock|fold_fix): table lookup problem
Nov 14 21:54:53 ns1 postfix/master[1670]: warning: process /usr/lib/postfix/trivial-rewrite pid 7759 exit status 1
Nov 14 21:54:53 ns1 postfix/cleanup[7397]: warning: problem talking to service rewrite: Connection reset by peer
Nov 14 21:54:53 ns1 postfix/master[1670]: warning: /usr/lib/postfix/trivial-rewrite: bad command startup -- throttling
Nov 14 21:54:53 ns1 postfix/smtpd[7071]: warning: problem talking to service rewrite: Success
netstat -ln | grep mysql
を試しましたが、戻ります
unix 2 [ ACC ] STREAM LISTENING 5817 /var/run/mysqld/mysqld.sock
。
/etc/postfix/mysql-virtual-alias-maps.cf
ファイルの内容は次のとおりです。
user = stevejobs
password = Apple
hosts = localhost
dbname = mailserver
query = SELECT destination FROM virtual_aliases WHERE source='%s'
ここでhosts = 127.0.0.1
を変更しようとしましたが、warning: connect to mysql server 127.0.0.1: Can't connect to MySQL server on '127.0.0.1' (110)
と表示されます
だから、私は迷子になり、問題を解決するために他にどこを変えるべきか分からない。どんな助けも大歓迎です。
ありがとうございました。
EDIT 1
Netstat -naを実行すると、mysqlがlocalhostにも127.0.0.1にもバインドされないことがわかります。それも問題でしょうか?
bakhtiyor@ns1:~$ netstat -na | grep 3306
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN
それは非常に愚かなようですが、私は問題を解決しました。システム管理者が何らかの理由でファイアウォールですべてのホストの3306ポートをブロックしていることに気付かなかったため、mysqlに接続できませんでした。その制限を取り除いた後、問題なくmysqlに接続できました。ご提案とヘルプをありがとう。
Mysqlサーバーに接続しようとしましたか?
mysql -u username -p
また、/ etc/mysql/my.cnfのリスンアドレスを127.0.0.1に変更して、MySQLを再起動することもできます。
# /etc/mysql/my.cnf
bind-address = 127.0.0.1
同様の問題がありました。 「hosts = localhost」を「hosts = 127.0.0.1」に変更し、bind-addressを同じアドレスに設定すると修正されました(何らかの理由でbind-addressが0.0.0.0に設定されました)
会社のコンピューターの1つで同じエラーが発生していました。
Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)
Sshを介してX-windowsプログラムを実行しようとしたときにも、このエラーが頻繁に発生していました。
GConf Error: Failed to contact configuration server;
some possible causes are that you need to enable TCP/IP networking for ORBit,
or you have stale NFS locks due to a system crash
ルートファイルシステムが完全にいっぱいになり、空きディスクスペースがなくなったため、システムが必要なファイルを大量に書き込めなかったことがわかりました。多くの異なるプログラムに関連するあらゆる種類のエラーが発生していました。 (GDMからログインできなかった、GDMの壁紙が黒くなった、gconfロックファイルエラーなど)
この単純なコマンドを入力するだけで、不要になったルートパーティション内の400 MB以上のファイルを削除できました。
Sudo apt-get autoremove
これにより、ルートファイルシステムに必要な呼吸スペースが与えられました。今、すべてがうまく動作します。 10 GBのルートディレクトリでは2年以上のUbuntu更新を処理するには不十分だと思います。
誰も気にしない場合、システムはUbuntu 10.04がリリースされてから実行されています。システムは少なくとも週に1回更新されます。今日の日付は2012年9月6日であるため、更新のほぼ2年半に相当します。
最終的に私を助けたのは、libmysqlclient16
を除くmysqlに関連するすべてのapt-getパッケージを削除(削除ではなく!)することでした(これは不明です)。
だから、ちょうど:
dpkg --get-selections | grep mysql
その後:
Sudo apt-get purge <package_name>
共通から開始して、クライアント、サーバーの順に進みます。