重度にファイアウォールで保護されたネットワークからPHPで電子メールを送信する方法は?
-
03-07-2019 - |
質問
ローカルホストマシンからメールを送信したいのですが(PHPのメール機能を使用)、メールサーバーがないため、これを実行できません。さらに、高度にファイアウォールで保護されたネットワークを介して電子メールを送信できる必要があります(まだ知らない範囲)。
私の考えは、「QK SMTPサーバー3」を使用することです。そして、「リレーサーバー」として私が持っている外部サーバーを使用するようにします。これは機能しますか?もっと簡単なオプションはありますか?
私のアプローチがOKなら。サーバーがこの要求を受信できるように、サーバーのポート25を開く方法を知りたいです。このコマンドを実行すると、次のようになります:
[root@balder296 ~]# service iptables status
Firewall is stopped.
[root@balder296 ~]#
ヘルプやアドバイスをありがとう。
解決済み
Hotmail(驚くべきことに)は無料の中継サービスを提供します。これをテストするときにこれがうまくいくことを願っています!ただし、外部メールサーバーを使用する方法があります。
解決
ポート25(SMTP)でインターネットに接続できるかどうかを判断する
-
telnet gmail-smtp-in.l.google.com 25
(これはGmailサーバーの1つです)
接続を開くことができる場合は、メールサーバーをインストールし、mail()関数を使用してメッセージを送信できます。
-
yum install postfix
(たとえば、「サービス」のコメントから、RedhatまたはCentosを実行していると仮定します)
ポート25でインターネットメールサーバーに接続できない場合は、内部メールリレーを見つけることができます(これはネットワークによって異なります)。
その時点で、2つのオプションがあります。 mails-server(Postfixを使用している場合は/ etc / postfix)で 'relay'パラメータを定義すると、ローカルメールサーバーで内部mail()関数を使用できます。
他のオプションは、このガイドに従い、PHPに送信してもらうことです。内部リレーへのメッセージ。
他のヒント
たぶん、あなたがいるネットワークが重度にファイアウォールで保護されている理由を説明する(良い?)理由があります。
メールを送信するための良い解決策は何ですか?
Google Mailアカウントをお持ちの場合は、 Swift Mailerを使用してメールを送信できます。
メールサーバーを実行しているファイアウォールの背後にあるマシンが必要です。できれば、これを使用する必要があります。その背後にある他のものはすべて、ポート25で発信接続を開くことをブロックする必要がありますが、これはブロックする必要があります。アプリケーションを実行しているマシンのメールサーバーに、そのマシンを中継してもらいます。私はホスティング会社で働いており、それが私たちの共有ホスティングサーバーで行われていることです。これにより、送信メールを追跡して、ファイアウォールの背後で何も実行されていないことを確認できます。
親しみやすい近所のシステム管理者は、きちんと尋ねるとほぼ間違いなくこれを設定します。
これが公開アプリケーション用である場合、SMTPアクセスを送信できる場合でも、将来問題が発生する可能性があることに注意してください。スパム対策保護は、ネットワークの動作についてかなり慎重になりました。たとえば、ネットワーク上に有効なSMTPサーバーがあり、ネットワークの外部から同じIPアドレスを持っているように見える場合、両方のサーバーに問題を引き起こす可能性のある別のSMTPサーバーがあります。いくつかの主要なブラックリストは、複数のサーバーがあるように見えるアドレスを自動的にブロックします。
ネットワーク管理者を回避しようとしている場合、せいぜい脆弱なシステムを設置している可能性があります。ネットワークのルール/セットアップに応じて、SMTPサーバーパッケージをセットアップして、ネットワーク上の別の電子メールサーバーからメッセージをリレーすることができます。これには、ネットワークまたはメール管理者との連携が必要です。
過去にSwiftMailerを使用してから、一般的なGmailアカウントを設定してメールを送信しました。私が見つけた1つのことは、設定したGmailアカウントとして送信元アドレスを保持するのが最善であるということです。そうしないと、スパムフィルターはメールを破壊する傾向があります。