プログラマならぬ SI屋への道 Tracでメールが送信されない hosts登録が必要という???なpython
Tracってなに?って人もいるかも知れませんが、簡単に言うとソフト開発のバグ情報交換のイントラネット(インターネットのほうが多いかもしれない)バグトラッキングシステムと呼ばれるものの一つで、実際にはバグ管理だけじゃなくて開発プロジェクトの情報交換に使ったりします。私みたいに都心から離れていたりしてお持ち帰りで仕事するには、いいツールですね。今回、新規のお仕事で、仕様書書きをまずやっているのですが、実際にプログラムするのは別のまた遠くの会社に依頼することになった関係で、私は今回SIといいますか、仕様書書きに専念することとなりました。 それで、遠隔地のメンバーとの情報交換のためにTracを活用ようというわけです。Tracも設定がいろいろなんだけど、更新があったらメンバーへメールがあがるようにしようと思い、設定を行ったのだけど、うまく動いてくれなくて、今日はその調査をしていたわけです。エラーについては、こんな感じかな2008-11-07 13:49:06,011 Trac[web_ui] ERROR: Failure sending notification on change to ticket #1: (-2, 'Name or service not known')Traceback (most recent call last): File "/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac/ticket/web_ui.py", line 1002, in _do_save tn.notify(ticket, newticket=False, modtime=now) File "/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac/ticket/notification.py", line 148, in notify NotifyEmail.notify(self, ticket.id, subject) File "/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac/notification.py", line 246, in notify Notify.notify(self, resid) File "/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac/notification.py", line 134, in notify self.begin_send() File "/usr/lib/python2.4/site-packages/Trac-0.11.1.ja1-py2.4.egg/trac/notification.py", line 318, in begin_send self.server = smtplib.SMTP(self.smtp_server, self.smtp_port) File "/usr/lib/python2.4/smtplib.py", line 258, in __init__ addr = socket.gethostbyname(socket.gethostname())trac.log を見て、ようわからないなりに、socket.gethostbyname(socket.gethostname())でエラーになっているということでした。自宅サーバーというか自社というか、ダイナミックDNSで普通にルーター下のローカルネットワークlinuxがいるだけで、localネットでもDHCPで使っています。ただ、ルータのほうで、必ず同じローカルアドレスが割りあたるようには設定しているだけです。いろいろ googleで探すとやはり、英語のサイトに答えがありました。http://mail.python.org/pipermail/tutor/2006-February/044848.html> >Is there no entry in /etc/hosts for linux with the IP-Address of your> server?> >If not, try to insert such an entry.>Thanks for all your suggestions. I inserted my IP address for 'linux' into/etc/hosts. Now smtplib.SMTP() works. But the authentication fails. I triedall combinations of user/pass , but no joy.localホスト名を、/etc/hosts に登録したらうまくいったということです。うちのlinuxサーバーもホスト名を、hostsに登録していなかったので、登録するとうまくいきました。またさらにチェック方法として pythonでメールプログラムでの作成例の紹介もあったのでこれも結構有効でした。http://trac.edgewall.org/ticket/2921import smtplibs = smtplib.SMTP('mail.communi.tv', 25)s.login('dev@communi.tv', 'ctvdev05')s.sendmail('dev@communi.tv', ['dev@communi.tv'], "TEST")s.close()これで、# python そのファイル.pyでメールが送られるようです。(もちろんpythonがインストールされている場合です)