web-dev-qa-db-ja.com

Ubuntuのすべてのメール機能を無効にします

Ubuntuサーバー(LAMP)に標準のステージング環境があり、その上にいくつかのWebページがあります。

特定のワークフローイベントで電子メールを送信するWebページがいくつかあります。

システムでいくつかのテストを実行する必要がありますが、ランダムな電子メールが飛び交ってモデレーターにスパムを送信することはできません(一度発生しました)。

コードの特定の部分を無効にしたり、Webページの設定を調整したりするのは良いシナリオではありません。システムは本番のような設定にする必要があるため、いくつかの場所にある場合があります)そして私はそれを危険にさらすことはできません。

私が考えることができる最も合理的な解決策は、単純にすべてのメールサービス(一時的に)を無効にすることです(一般的にPHPで使用されます)。

サーバーへのフルアクセスと基本的なLinuxスキルがあります。

この魔女は最初は素敵に見えます:

Sudo /etc/init.d/sendmail stop

しかし、他に考えられるメールサービスがあるかどうかを知る必要があります。
実行中かどうかを確認する方法、
それらを停止する方法、
検証方法。

おそらく、上記のコマンドで十分だと思います...しかし、このテーマについてより多くの経験がある人の意見を聞きたいと思います。

4
d.raev

このようにメールサーバー全体を停止すると(/etc/init.d/sendmail stop)、コードを正しくテストするのが困難になる場合があります。たとえば、メールを送信するアクションを実行すると、メールサーバーが起動していないために待機時間が長すぎてタイムアウトが発生し、コードが機能していないと思われる可能性があります。

この問題に関する私の個人的なアプローチは、メールサーバーを停止することではなく、コードレベルおよびシステムレベルで動作することです。

  1. まず、メールを送信する必要がある場合、SendmailまたはPostfixまたはQmailのような完全なメールサーバーをインストールする必要はありません。 。 /etc/ssmtp/ssmtp.confに設定されたメールリレーを使用してメールを送信するのに十分なssmtpパッケージをインストールするだけです。
  2. アプリケーションがmailsendmailなどのローカルバイナリを使用してメールを送信している場合、メールサーバーを停止することは解決策ではない可能性があります。蓄積されたメールはすぐに送信されます。
  3. 私の理想的な解決策は、認証を提供するためにユーザー名とパスワードを使用して、IPアドレスとポート(デフォルトでは25)に接続し、アプリケーションから直接SMTPプロトコルを使用してメールを送信することです。
  4. アプリケーションが(ローカルまたは外部の)リレーにメールを送信できる場合は、コードにハードコーディングされておらず、アプリケーション専用の構成ファイルを介して定義されていることを確認してください。同じことが宛先の電子メールアドレスにも当てはまります。
  5. 前の点を尊重すれば、異なる電子メール構成のステージングサーバーを構築できます。ステージングサーバーの構成では、個人の電子メールアドレスにメールを送信できます。
  6. このアプローチは、本番メールの実際の宛先を邪魔することなく、電子メールの機能もテストできるという利点があります。また、メールサーバーを無効にする副作用が発生しないことも確認しています。
2
Benoit