6

Apacheとmod_wsgiを使用して、fedoraサーバー(Fedoraリリース15(Lovelock))でdjangoWebサイトを実行しています。最近、django-registrationアプリ(バージョン0.7)を使用して登録システムを追加しようとしましたが、残念ながら、アプリが新しく登録されたユーザーに確認メールを送信しようとすると、「[Errno13]許可が拒否されました」というメッセージが表示されます。次のように、Gmailアカウントを使用してメールを送信するようにプロジェクトの設定ファイルを構成しました。

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'myemailaddress@gmail.com'
EMAIL_HOST_PASSWORD = 'mypassword'
EMAIL_PORT = 587

プロジェクトのシェルを使用しているときにsend_mailを手動でインポートすると、メールを送信できます。ビューやモデルは何も変更していません。登録テンプレートファイルは次のとおりです。

{% 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

これは完全なトレースバックです。

トレースバック:
get_responseのファイル「/usr/lib/python2.7/site-packages/django/core/handlers/base.py」
  111. response = callback(request、* callback_args、** callback_kwargs)
レジスタ内のファイル「/.../lib/registration/views.py」
  148. new_user = form.save(profile_callback = profile_callback)
保存中のファイル「/.../lib/registration/forms.py」
  88. send_email = True)
create_inactive_userのファイル「/.../lib/registration/models.py」
  127. send_mail(subject、message、settings.DEFAULT_FROM_EMAIL、[new_user.email])
send_mailのファイル「/usr/lib/python2.7/site-packages/django/core/mail/__init__.py」
  61. connection = connection).send()
ファイル「/usr/lib/python2.7/site-packages/django/core/mail/message.py」を送信します
  251. return self.get_connection(fail_silently).send_messages([self])
send_messagesのファイル「/usr/lib/python2.7/site-packages/django/core/mail/backends/smtp.py」
  79. new_conn_created = self.open()
開いているファイル「/usr/lib/python2.7/site-packages/django/core/mail/backends/smtp.py」
  42. local_hostname = DNS_NAME.get_fqdn())
__init__のファイル"/usr/lib64/python2.7/smtplib.py"
  239.(code、msg)= self.connect(host、port)
connectのファイル「/usr/lib64/python2.7/smtplib.py」
  295. self.sock = self._get_socket(host、port、self.timeout)
_get_socketのファイル"/usr/lib64/python2.7/smtplib.py"
  273. return socket.create_connection((port、host)、timeout)
create_connectionのファイル「/usr/lib64/python2.7/socket.py」
  571.エラーを発生させる

例外タイプ:/ accounts /register/でのエラー
例外値:[Errno13]許可が拒否されました
4

3 に答える 3

9

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

コマンドを使用して SELinux 強制を一時的に無効にしてsetenforce 0、問題が解決するかどうかを確認することもできます。そうであろうとなかろうと、setenforce 1強制を再度有効にするために使用することをお勧めします。

于 2011-10-27T06:57:12.617 に答える
1

これは IO エラーである可能性があります。ビュー内のファイルに印刷ステートメントを実行したり、何かを書き込んだりしていますか? その場合、許可の問題が発生する可能性があります。確認して回答してください。

于 2011-10-27T09:24:07.620 に答える
0

これらは、settings.py に追加する必要がある行です。

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

@domain.com を削除しEMAIL_HOST_USERて、myemailaddress

于 2011-10-27T07:00:30.797 に答える