MovableTypeのメール通知機能が動いた!
以前アップした”MovableTypeからのメール通知機能”の記事の続きである。
本日は仮想PC上に構築したXmail Server及びMovableTypeを用い、以前より懸案であったメール通知機能の不具合を調査していた。
相変わらずローカルのメールサーバへメール通知はされていない。
mt.cfgをいろいろ変えてみるがさっぱりである。
XmailServerのアクセスログを見てみるが、MovableTypeからアクセスしてきている気配すらないのだ。
sendmailでも駄目、smtpでも駄目なのである。
とりあえずsmtpサーバをローカルから@niftyに変えてみて、Etherealでモニタをしてみることにした。
@niftyのsmtpサーバへアクセスしに行くか調べるためである。
結果は全くアクセスしに行っていないことが判った。
メール送信しに行っていないのである。
しかしMovableType側で見ていると送信しに行っている様に見えるのである。
試しにsendmailへのpathを間違った物にしてやると、送信時にエラーを吐いて失敗するのである。
だからsendmailの設定は間違っているとは思えない。
smtp送信時に必要となるPerlのsendmailモジュールも、ppmから”install mail::sendmail”コマンドによりインストールは終わっている。
しかし実際sendmail、smtpどちらの方式でもうまくいかないのである。
いい加減煮詰まってきたのでネットでMovableTypeのメール通知機能を調べていたら、エントリー記事の更新のお知らせ機能について書いてある記事が目に止まった。
今までコメントの通知機能を使ってしかテストしていなかったので、お知らせ機能を使ってテストしてみることにしてみた。
するとメール送信時にプロフィールのメールアドレス欄が設定されていないと警告が出たのである。
調べてみると確かにプロフィールのメールアドレス欄は空白になっていた。
早速メールアドレスを設定し、テストしてみることにする。
お知らせ機能を使ってメールを送信してみるが、今度はエラーとならずに送信できたように見える。
XmailServerにアクセスしてメールが届いたか確認してみると、今度は正常に届いていた。
念の為、コメント通知機能からも試したが問題ないのである。
これでようやくメール通知機能が正常に動くようになったのである。
しかしうまくいったのはsmtpのみでsendmailでは相変わらず駄目であった。
まあsendmailでメール送信を行うと脆弱性の問題が発生する恐れがあるので、smtpで送信出来るのなら良しとすることにする。
今後の為にsmtpでメール通知機能を動かすのに必要な事を纏めておくと
①プロフィールのメールアドレスは必ず入力しておく事
このアドレスに対してメール通知されるのである。
私は管理にある通知リストに登録したメールアドレスに通知されると勘違いしていたのである。
プロフィール欄のメールアドレスが登録されていないと、通知リストのメールアドレスにはメール通知されない様なのである。
プロフィール欄にメールアドレスが登録されていると、通知リストのメールアドレスにも正常にメール送信されるようである。
②Perlにsendmailモジュールを組み込んでおく事
コマンドプロンプトからppmを起動し、”install mail::sendmail”でsendmailモジュールを組み込んでおかないとMovableTypeからsmtpでメールを送れない様なのである。
複数のパッケージが表示された場合、”install mail::sendmail 2”の様に、後ろにインストールしたいパッケージの番号を入れるのである。
③mt.cfg内のMailTransferをsmtpとしコメントアウトを外す。
MovableTypeはデフォルトでsendmailが有効となっているので、明示的にsmtpを指定してるのである。
SMTPServerはコメントアウトのままでも問題ないようだ。指定しない場合はデフォルトでlocalhostになっている。
私の環境はsmtp,pop共MovableTypeと同一サーバで稼動しているのでこのままで良いが、メール通知先にプロバイダのメールアドレスを指定している場合はSMTPServerにプロバイダのsmtpサーバを指定してやる必要がある。
例えば@niftyの場合はsmtp.nifty.comとなる。
私のテストではプロバイダのメールアカウントへもちゃんと送信できたのである。
これで一通り機能が使える様になったので、残るは自宅サーバの再構築の実施なのである。
| 固定リンク
「自宅サーバ関連」カテゴリの記事
- Android12搭載のスマートフォンから自宅ネットワークへVPN接続できる環境を作る(2022.09.04)
- UQWiMAX WiMAX2+5Gでポート開放(2022.08.01)
- Celeron N5095搭載のミニPCを購入(2022.05.06)
- NginxをWindowsのコマンドラインから操作するバッチファイル(2022.03.31)
- 自宅ネットワークのマルチホーミング用ルータを更新する(2020.02.17)
コメント
4年近く前の記事なのですでに解決しているかもしれませんが、たまたま仕事でXMailServer環境にMovableType4を設置してMailFormプラグインからのメール送信を行い、成功したので書いておきます。
1. mt.cfg内
MailTransfer sendmail
SendMailPath c:\usr\xmail\sendmail.exe
↑XMailServer付属のsendmail.exeのパスを書きます
EmailAddressMain
↑これはなくても大丈夫だと思いますが一応書きました
2. /mt/lib/MT/Mail.pm内
関数 sub send_mt_sendmail 内153行あたりの
my $pid = open MAIL, '|-'; をコメント化
代わりに↓の2行を追加します
$sm_loc = $mgr->SendMailPath;
my $pid = open(MAIL, "| $sm_loc -t");
これでメールフォームプラグインで生成したフォームからは普通に送信できました。
投稿: mikki | 2009年7月22日 (水) 07:58
コメントにて貴重な情報ありがとうございます。
これってMovableTypeが環境変数に設定したsendmailの場所を無視してるので正しい場所を教えてやってるということでしょうかね?
結局SendMailは使いませんでしたが、機会があれば確認してみたいと思います。
投稿: rikuzen | 2009年7月22日 (水) 19:32