WEB関係の仕事をしていますが、まだまだ勉強中の身です。
文才がなく長文になりそうですので予めお詫び致します。
クライアント(A社とします)からPHPでメール送信プログラムの作成依頼を受けましたが、少し特殊?な状況でメール送信ができません。
WEBサーバ:A社に設置(WEB予約システムをメイン)
WEBサーバの構築と管理:予約システムの制作会社(B社とします)
WEBサーバ内には独自ドメインのホームページ(hoge.orgとします)
ドメイン・DNS管理:C社
メールアドレス:独自ドメインで取得できず、abc@hoge.netという別ドメインで取得(C社サーバ内)
という状況です。
WEBサーバ内でphpinfo()を実行したところ、メール関係では
include_path = .:/usr/local/lib/php
sendmail_from = no value
sendmail_path = /usr/sbin/sendmail -t -i
SMTP = localhost
smtp_port = 25
となっています。
sendmail_fromがno valueですが、上記を見たところsendmailが起動していると思ったのですが、これだけでは判断できないのでしょうか?
PHPでmb_send_mail()を実行した結果、TRUE が帰ってきますがメールは届きません。(宛先はabc@hoge.net)
ちなみに、B社ではメール関係のプログラムはインストールしていないと言っています
(ですが管理が杜撰なので正直、信用できません)し、WEBサーバは予約システムがメインでありメールサーバを入れると
ウィルスが予約システムに影響を及ぼす可能性があるのでインストールできないと言われました。(正直、この対応にも不満が残ります)
ファイル作成 → B社へ渡し → B社がサーバへアップロードと言う流れですのでこちらでサーバ設定を見ることもできません。
こういった状況でWEBサーバ内のPHPからabc@hoge.netへ送信する方法はあるのでしょうか?
phpinfo()を見る限りPEARもインストールされていないようですが、これだけでは判断できませんか?
B社の穴を見つけるようで気分が悪いですがクライアントの要望に答えたく考え悩んでいます。
B社いわく「”現状”の設定内で対応してくれ」とのことですので・・・。
No.6ベストアンサー
- 回答日時:
横やり&遅レスですが。
。> POP Before SMTP、SMTP-AUTHの対応で一度POP認証すれば
> 送信できそうな気がするのですが・・・無理でしょうか?
POP Before SMTP あたりまではソケット通信でも難しくないと思いますが、SMTP-AUTHは
難しいのではないでしょうか(技術的に調べていないので分かりませんが)。
> ですが、この方法だとB社の外部サーバから(別ドメインから)の接続なので第3者利用と
> なってしまい普通はスパム扱いですよね?
> 正直この方法での送信できたとしても気持ち悪いです・・・。
SPAMは不正利用であり、許可を受けて利用するのは何ら問題ありません。
一般的な使用方法です。
> PEAR用意し利用しなければならないのですがmそうすると.htaccessまたはini_setで利用するとなると思います。
> この方法は推奨されていないので踏み止まっています。
推奨されていないという事は何もないですよ。
.htaccessやini_setは使うために用意された機能です。
若干の性能ダウン(0.1%とか)があるというだけです。
> PEAR用意し利用するのと下記のようにfsockopenでソケット接続する方法と、どちらがスマートなのでしょうか?
PEARのライブラリで済むなら、その方が楽で不具合も少ないと思いますが、何れでも良いと思います。
回答ありがとうございます。
結果を報告しますと、B社C社ともに外部からのソケット通信およびメールクライアント(PEAR含む)の利用が許可されなかったのでメール送信の手段が完全になくなりました。
送信部で外部ドメイン(弊社ドメイン)を利用すればメールは送れますが仕様や金銭的の面でクライアントが諦めました。
今回、私は完全解決とまではいきませんでしたが、同じような問題に遭遇された方が参考になれば幸いです。
ありがとうございました。
No.4
- 回答日時:
> PEARはインストールされてません。
B社確認済みです。わざわざPEAR無しでインストールするとはあまり考えにくい感じはありますが。。。
PEARに関してはローカルインストールも可能です。簡単なWEBアプリになっているものもあるみたいですね(私は未使用)。
http://pear.php.net/manual/ja/installation.share …
参考まで。
この回答への補足
回答ありがとうございます。
>わざわざPEAR無しで・・・・・
私もそう思います。ですがB社がそう言っている以上、諦めるしかありません。
ローカルインストールについてはNo3の補足の通りです。
No.3
- 回答日時:
B社のサーバでsendmailで仮にメール送信が可能だとしても、駄目と言っている訳ですから、サービスを止められても文句は言えませんね。
とりあえず、PEARのMailクラスでも使えばどうでしょうか。
SMTPサーバの指定が可能です。一般的なメールクライアント的に使う事がかのうじゃないでしょうか。
http://dozo.matrix.jp/pear/index.php/PEAR/Mail.h …
参考まで。
この回答への補足
回答ありがとうございます。
>サービスを止められても文句は言えませんね。
その通りですね。B社の穴を見つけるようなことは止めます。
PEARはインストールされてません。B社確認済みです。
PEAR用意し利用しなければならないのですがmそうすると.htaccessまたはini_setで利用するとなると思います。
この方法は推奨されていないので踏み止まっています。
PEAR用意し利用するのと下記のようにfsockopenでソケット接続する方法と、どちらがスマートなのでしょうか?
No.2
- 回答日時:
php.iniの設定
SMTP = localhost
をC社のメールサーバのアドレスにしてみて下さい。
もちろん、メールサーバーの設定次第では
不正利用(Fromの詐称など)とみなされて、はじかれる可能性もありますし、
POP Before SMTPが使われていれば、その辺りの考慮も必要です。
どうしても上手くいかなければ、C社に相談して下さい。
それと、php.iniの設定を書き換える事が出来なければ、
ini_set()関数で対処して下さい。
この回答への補足
回答ありがとうございます。
php.iniの設定変更は試しにB社に依頼していますがおそらく断られます。
変更してもらえたとしてもC社ではPOP Before SMTPおよびSMTP-AUTHを
利用してるのでini変更だけでは送信はできないと思っています。
C社へどうにか送信可能な状況にできないか?と打診していますが回答はあまだありません。
SMTP関係のini_set()はWindowsサーバのみ有効だと認識していたのですが
Linuxサーバでも有効なのでしょうか?(WEBサーバはLinuxです)
POP Before SMTP、SMTP-AUTHの対応で一度POP認証すれば
送信できそうな気がするのですが・・・無理でしょうか?
手順としては、
1)fsockopenでC社メールサーバの110番ポートに接続
2)USER、PASSを送信
3)QUIT
4)fsockopenでC社メールサーバの25番ポートに接続
5) HELOコマンド送信
6)MAIL FROM、RCPT TO、DATAでメール送信
7)QUIT
と考えていますがこの流れで送信可能かをC社に問い合わせています。
ですが、この方法だとB社の外部サーバから(別ドメインから)の接続なので第3者利用となってしまい普通はスパム扱いですよね?
正直この方法での送信できたとしても気持ち悪いです・・・。
他に何か良い方法はないでしょうか?
書き忘れましたが利用できる言語はPHPのみでバージョンは4.4.2です
No.1
- 回答日時:
> sendmail_fromがno valueですが、上記を見たところsendmailが起動していると思ったのですが、これだけでは判断できないのでしょうか?
これだけでは判断できません。
> PHPでmb_send_mail()を実行した結果、TRUE が帰ってきますがメールは届きません。(宛先はabc@hoge.net)
恐らくsendmailは存在するけど、きちんと設定をしていないか、NWのどこかで止められたのでは無いかと思います。あまり勝手にやると、怒られたりするので注意した方が良いです。
技術的な話では無いですが、メールサーバがどこかに無いとメールが送信できない訳で、どのメールサーバを使うべきなのか、クライアントであるA社に指示をあおぐ話なんじゃないでしょうか。
その結果、A社がB社にメールサーバを立てる指示をするのか、あるいは別のメールサーバを使うようにあなたに言ってくるのかは判りませんが。
この回答への補足
回答ありがとうございます。
>これだけでは判断できません。
納得しました。
>あまり勝手にやると、怒られたりするので注意した方が良いです。
そうですね。私としてもサーバが不安定になるようなことはしたくありません。ですからここで最善策を聞ければ、と思い投稿しました。
>クライアントであるA社に指示をあおぐ話なんじゃないでしょうか。
今回の件で私とABC社でやり取りはしていますが、B社からメールサーバは立てられないとハッキリ断られています。
ですからC社のメールサーバを使うしかありません。
投降後に色々調べてみていますが、fsockopen()でソケット接続はどうか?と模索中です。それもC社次第かもしれませんが・・・。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- サーバー メールサーバーについて詳しい方、メールサーバーの管理業務経験のある方、教えてください。 3 2022/11/12 18:24
- その他(メールソフト・メールサービス) メールが送信できない 発信側でできる対策 3 2023/05/11 10:22
- サーバー 別サーバに構築したApache+Tomcatの連携について 2 2023/03/06 23:23
- WordPress(ワードプレス) WordPressの編集画面がいつもと違うのですがこれは何でしょう? 1 2023/03/29 10:26
- 情報処理技術者・Microsoft認定資格 応用情報処理技術者試験のシステム利用率の計算について 2 2022/03/28 07:43
- Gmail SPFレコードとDNSサーバーについて、gmailを設定できるかどうか 2 2023/06/10 23:55
- ノートパソコン ESETの初期インストールの仕方 1 2022/10/14 08:26
- ネットワーク ニフティメールのiPhoneとWin PCでの運用 1 2023/03/30 11:19
- サーバー 無料のレンタルサーバで、スクレイピング(?)はできますか? 2 2022/05/07 10:09
- ドメイン・サーバー・クラウドサービス サクラサーバーでのHPのUPについて 1 2023/06/10 11:21
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
項目「sendmail_path」には メ...
-
(PHP)mb_send_mailでメール送信...
-
BASP21メール送信(SMTP-AUTH認...
-
こちらはただの直列処理ですか?
-
フォントの色を変えるには?
-
onedrive にexcelファイルをア...
-
form actionで二つ送信先を指定...
-
シェルスクリプトからphpファイ...
-
FTPコマンドでディレクトリごと...
-
PHPのif文でその処理を途中で抜...
-
存在しないメールアドレスかど...
-
.htaccessにphp_valueが使用できな
-
PHP8を使うと、大量のWarningが...
-
PHPでfatal errorが出ても無視...
-
アップロード画像数でCSSを分け...
-
Apacheでhttp://localhost/が表...
-
別ファイルの変数を呼び出した...
-
FORMで送信ボタンと戻るボタン...
-
sqlで日付が一番古いデータの月...
-
php5のrename()は日本語をリネ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PHP mb_send_mailが使えない
-
mb_send_mailでデタラメなメー...
-
(PHP)mb_send_mailでメール送信...
-
PHP でmb_send_mailが上手くい...
-
メール送信
-
xamppでPHPのフォームからメー...
-
「SMTP」が「localhost」ではな...
-
C#のメール送信について質問が...
-
BASP21メール送信(SMTP-AUTH認...
-
C# メール送信ついて困っています
-
外部smtpサーバーを利用したメ...
-
phpをpsqlへ接続しようとするの...
-
PHPでsimplexml_load_fileの引...
-
mail関数の587ポート対応に関して
-
SMTPを自ドメインにしてメール送信
-
VB6.0とBASP21を用いてyahooメ...
-
vb2005のメール送信について
-
XAMPPのローカル環境でメール送...
-
項目「sendmail_path」には メ...
-
C# SmtpでYahooサーバーから送信
おすすめ情報