4

今後数週間で交換からGoogleがホストするメールに切り替えます.djangoアプリ内から送信できるようにメールを設定する方法を見つけようとしています.

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'
EMAIL_HOST='smtp.gmail.com'
EMAIL_HOST_USER='someone@example.com'
EMAIL_HOST_PASSWORD='16characters'
EMAIL_USE_TLS=True
EMAIL_PORT=587

以上が私の電子メール設定です。気になるのは、アプリケーション固有の 16 文字のパスワードがまもなく git リポジトリにコミットされることです。

この pw を Web フロントエンドで使用しようとすると、アプリケーション固有の pw を使用するのではなく、アカウントのパスワードを使用するように指示されます。これは良いことですが、少なくとも Web インターフェースはそれらを許可しません。このキーが作成されたとき、このキーに課された制限はありませんでした (制限を課す方法はありません。単に「名前を付ける」方法です)。 2 要素認証の目的を完全に無効にします。

では、アプリがバグ レポート (500 秒) やアラートを他の人に送信しているときに、Google をメール プロバイダーとして使用するにはどうすればよいでしょうか? 私が見たすべてのスマートホストのセットアップでは、ユーザー名/パスワードも必要であるため、リポジトリから除外されますが、実際には問題は解決されません.

現在、アカウントを安全に保ちたい場合は、Google から追加の「ユーザー」を購入し、そのユーザーがメールを送信するための ASP を作成する必要があるようです。

PS: 別の電話を借りて、期待どおりに私のアカウントにアクセスできることを証明しました。ASPが特定のIPにノードロックする機能を必要とするか、送信用のファントムアカウントが必要なようです...

4

1 に答える 1

1

ホスティング環境が安全であると考える場合は、ログインを保存して環境変数に渡すというアプローチに従うことができます。http://www.12factor.net/config (そして、人気が高まっているようです) 。

次に、settings.py で:

  #If you want loud failures, usually the best
  EMAIL_HOST_USER = os.environ['EMAIL_USERNAME']
  EMAIL_HOST_PASSWORD = os.environ['EMAIL_PASSWORD']

  #If you want quiet failures, usually not a good idea
  EMAIL_HOST_USER = os.environ.get('EMAIL_USERNAME', None)
  EMAIL_HOST_PASSWORD = os.environ.get('EMAIL_PASSWORD', None)

環境変数の設定方法はセットアップによって異なりますが、通常は非常に簡単です。

このアプローチには、git リポジトリから秘密を守るという利点があるため、新しい共同作業者をプロジェクトに追加しても、AWS/email/etc アカウントが乗っ取られる心配はありません。

于 2012-12-27T17:14:28.607 に答える