2011-10-27 11 views
6

Apacheとmod_wsgiを使用して、Fedoraサーバー(Fedoraリリース15(Lovelock))でdjangoのWebサイトを実行しています。最近、私はdjango登録アプリ(バージョン0.7)を使って登録システムを追加しようとしましたが、残念ながら、登録されたユーザーに確認メールを送信しようとすると "[Errno 13] Permission denied"私は、Gmailアカウントをこのように使用して電子メールを送信するために私のプロジェクトの設定ファイルを設定した:プロジェクトのシェルを使用している間、私は手動でsend_mailをインポートするとき確認メールを送信しようとすると「許可が拒否されました」

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend' 
EMAIL_USE_TLS = True 
EMAIL_HOST = 'smtp.gmail.com' 
EMAIL_HOST_USER = '[email protected]' 
EMAIL_HOST_PASSWORD = 'mypassword' 
EMAIL_PORT = 587 

私は電子メールを送信することができます。 ビューまたはモデルで何も変更していません。ここで登録テンプレートファイルは、次のとおりです。

{% extends "base.html" %} 
{% load i18n %} 

{% block content %} 
<form method="post" action="/accounts/register/"> 
    {% csrf_token %} 
    {{ form }} 
    <input type="submit" value="Register"/> 
</form> 
{% endblock %} 

、ここでは、私が取得エラーです:

[Errno 13] Permission denied 
Request Method: POST 
Request URL: http://myip/accounts/register/ 
Django Version: 1.3.1 
Exception Type: error 
Exception Value:  
[Errno 13] Permission denied 
Exception Location: /usr/lib64/python2.7/socket.py in create_connection, line 571 

が、これは完全なトレースバックです:

 
Traceback: 
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response 
    111.       response = callback(request, *callback_args, **callback_kwargs) 
File "/.../lib/registration/views.py" in register 
    148.    new_user = form.save(profile_callback=profile_callback) 
File "/.../lib/registration/forms.py" in save 
    88.                  send_email = True) 
File "/.../lib/registration/models.py" in create_inactive_user 
    127.    send_mail(subject, message, settings.DEFAULT_FROM_EMAIL, [new_user.email]) 
File "/usr/lib/python2.7/site-packages/django/core/mail/__init__.py" in send_mail 
    61.       connection=connection).send() 
File "/usr/lib/python2.7/site-packages/django/core/mail/message.py" in send 
    251.   return self.get_connection(fail_silently).send_messages([self]) 
File "/usr/lib/python2.7/site-packages/django/core/mail/backends/smtp.py" in send_messages 
    79.    new_conn_created = self.open() 
File "/usr/lib/python2.7/site-packages/django/core/mail/backends/smtp.py" in open 
    42.           local_hostname=DNS_NAME.get_fqdn()) 
File "/usr/lib64/python2.7/smtplib.py" in __init__ 
    239.    (code, msg) = self.connect(host, port) 
File "/usr/lib64/python2.7/smtplib.py" in connect 
    295.   self.sock = self._get_socket(host, port, self.timeout) 
File "/usr/lib64/python2.7/smtplib.py" in _get_socket 
    273.   return socket.create_connection((port, host), timeout) 
File "/usr/lib64/python2.7/socket.py" in create_connection 
    571.   raise err 

Exception Type: error at /accounts/register/ 
Exception Value: [Errno 13] Permission denied 
+0

実際に電子メールを送信するコードのビューセクションに配置できますか? – unni

+0

私はトレースバックを追加しました – mmbrian

答えて

9

これは、SELinuxによって防止されます。私はそれらのログをチェックし、それがあなたに許可を否定しているかどうかを確認します。おそらくプライマリログは/var/log/audit/audit.logにあります。アクションを試して、ログの最後に新しいメッセージが生成されているかどうか確認してください。もしそうなら、それはSELinuxで、電子メールの送信を拒否しています。それが否定を生成している場合は、おそらくaudit2allowを使ってSELinuxポリシーを更新する必要があります。それを行う方法については、SELinux CentOS Howtoをご覧ください。 CentOSとFedoraは、SELinuxがその行動を否定している場合、そこに記載されている手順がうまくいくほど近いです。そうでなければ、明らかに、これは無関係であろう。

また、コマンドsetenforce 0を使用してSELinux強制を一時的に無効にし、問題がなくなるかどうかを確認することもできます。実行するかどうかにかかわらず、setenforce 1を使用して再度施行を元に戻すことをお勧めします。

+0

あなたはApacheのエラーログを意味しますか? /var/www/algorithms.ir/ WSGIスクリプトの処理中に例外が発生しました。/etc/httpd/log/error_logの1つを尋ねて、これを見つけました: [エラー] [クライアント173.242.117.169] mod_wsgi(pid = 11534) referer:http://.../accounts/register/ [2011年10月27日02:01:14] [エラー] [クライアント173.242.117.169] IOError:書き込みに失敗しましたデータ、referer:http://.../accounts/register/ – mmbrian

+0

それはどういう意味ですか? – mmbrian

+0

私は詳細をいくつか答えを拡大しました。 Apacheのログは、私が指していたものではありませんでした。 –

0

これらはあなたがあなたのsettings.pyに追加する必要がある行は、次のとおりです。

EMAIL_HOST = 'smtp.webfaction.com' 
EMAIL_HOST_USER = '<mailbox>' 
EMAIL_HOST_PASSWORD = '<password>' 
DEFAULT_FROM_EMAIL = '<address>' 
SERVER_EMAIL = '<address>' 

はそれだけでmyemailaddress

+0

私はwebfactionを使用していません。私はrunnig "python manage.py shell"の後にsend_mailを実行すると問題はありません.DEFAULT_FROM_EMAILとSERVER_EMAILを設定しましたが、それでも同じエラーが発生します – mmbrian

1

これはIOエラーかもしれないだろうEMAIL_HOST_USERの@ domain.comを削除します。あなたは、あなたの見解でファイルに印刷ステートメントや文章を書いていますか?もしそうなら、許可の問題を持つことができます。確認して対応してください。

+0

私の遅れは、私の考えで起こっている唯一の事は、新しい非アクティブなユーザーをデータベースに追加してから、ユーザーのアクティベーションメッセージを生成して電子メールを送信することです。 私は自分のサーバのDNS名を設定していないので、それが問題の原因です。今のところ私は電子メール確認の代わりにcaptcha検証アプリを使用することに決めました – mmbrian

関連する問題