昨日の続き。
これは多分 POP before SMTP のせいだね。 SSH トンネリングを使って POP しているので、POP によってメール転送を許可されるホストがトンネリングをしているサーバになっているようだ。 ということで設定を修正。SMTP も SSH トンネリングさせる。
(setq mew-case-guess-alist '( ("To:" ("@docomo.ne.jp" . "docomo") ... ))) (setq mew-config-alist '(("docomo" ("smtp-server" . "ホスティングサービスのSMTPサーバ名") ("smtp-ssh-server" . "SSHトンネリングしているホスト名")) ... ("default" ("user" . "naney") ("mail-domain" . "naney.org") ("pop-server" . "localhost") ("smtp-server" . "localhost")) ))
よし。成功。
ノート PC の設定変更が面倒だな……と思ったが、考えてみたら普段手で書いて送っているメールは Mew から「直接 www.naney.org か会社の SMTP サーバへ SSH port forwarding 経由で送っている」から、こちらは別に関係ないのか。
とはいえローカルの qmail から送っているメールもあるから、これの設定をする必要あり。 こいつはどうやって設定しようか。
さて、どうしたものか。 皆はそうしているのか、要調査。
本日より ISP の OP25B が本格的に開始する。これにより契約しているホスティングサービスの SMTP サーバに自宅から接続できなくなる(このホスティングサービスではサブミッションポート (587 番)の提供は無し)。
自宅の Windows BOX からのメール送信ができなくなると困るので、 PortForwarder を使って SSH port forwarding して対応することにした。
まず PortForwarder 2.7.0 をダウンロードしてきて展開。
次に設定ファイルを作成する。ファイル名 config というテキストファイルを作成し、
Host mailserver User username Protocol 1 HostName ホスティングサーバ名 LocalForward 8025 メールサーバ名:25 LocalForward 8110 メールサーバ名:110
と書いて保存。
ホスティングサーバのメールサービスは POP before SMTP なので、25 番ポートと 110 番ポートを両方とも転送して、同じホストから接続しているように見せる必要がある。
次にこのファイルと同じディレクトリに SSH の鍵を置く (PortForwarder 1 時代に作った鍵があるので、今回は Protocol 1 を指定してこれを使うようにした)。
あとは PortForwarder を起動し、この config ファイルを指定して接続。
接続ができたら MUA を起動して POP、SMTP をそれぞれ localhost:8110、localhost:8025 を使うように設定を変更。
これでまずは OP25B を回避。 ちょっと手間が増えたがいたしかないところ。
Gmail の SMTP サーバ経由で送ったメールが相手のサーバに「Sender address rejected: We can't receive FreeMail message」で拒否されてしまった。 1年前に全部 Gmail の SMTP サーバ経由で送る設定にしてしまっていて今さら面倒なのだが、仕事関係のメールで送らないわけにもいかないので Mew の設定を修正。
拒否されたドメインに送る場合には、デフォルトで設定している Gmail 経由ではなく会社の SMTP サーバから送るようにする。
まずは case 振り分け設定。
(setq mew-case-guess-alist '( ("From:" ... ) ("To:" ... ("拒否られたドメイン" . "compaysmtp") ... ) ))
今回の設定変更で初めて知ったのだが、mew-case-guess-alist は後にマッチした方が優先されるらしい。最初 From: の方が後になっていて、期待したように動かずなんでだろうと思った。
次に送信設定。以前の SMTP over SSH で送っていた時の設定を復活。 後で Gmail で POP で吸い出させる際にメールのコピーが取れるように、Dcc: を設定しておく(昔設定していたけれど、Gmail に移行した時に消したやつ)。
(setq mew-config-alist '( ("companysmtp" ("mail-domain" . "example.com") ("smtp-server" . "localhost") ("ssh-keep-connection" . nil) ("dcc" . "自分のメールアドレス") ("smtp-ssh-server" . "mail.example.com"))
また会社のメールサーバは POP before SMTP なのでメールを送信する前に、いったん POP する必要がある。 しかし POP でメールを取ってしまうと Gmail 側から POP できなくなる。 これについては送信の際には fetchmail --check とやって認証だけ通すことにしよう。 そんなにしょっちゅうあるわけではないから、これでいいかな。
なんどかテストしながらようやくメールを送信。 1通メール出すのに随分かかってしまった。 Gmail は通して欲しいなぁ。
さくらのレンタルサーバの「ディスク容量増量ならびにOSバージョンアップに伴うメンテナンス」が寝ている間に終了。 Perl も新しいバージョンが使えるようになるのだけれど、デフォルトでは今までと同じバージョンだから何もしなくても良いはず。
って確認したらスクリプトが動かなくなっている……。
あー 32 bit が 64 bit になったんだっけ。 SpeedyCGI が動かなくなっているのでまず外し。で再度走らせたら今度は Storable が Long integer size is not compatible といって既存データを読めなくなったので破棄して再生成中。あとは別のスクリプトでいくつか動かなくなったものがあったので、そちらは依存ライブラリを cpanm しなおし。
それとそれと
メールの送信前認証としてご提供している POP before SMTP を廃止いたします。そのため、今後はSMTP認証(SMTP-AUTH)が必須となります。
ってあったのでメールの方も確認したら Gmail からさくらのレンタルサーバ経由でメールが送れなくなっている。あーでも POP before SMTP なんか使ってなかったでしょう。なんでだー。って Twitter あたりみたら、どうも「国外IPアドレスフィルタ」(デフォルト有効)の機能提供開始のせいっぽい。 Gmail のサーバ国内とは限らないもんねぇ。
開始日時は自分のサーバは3月19日(水) 12:00 なので、この時から既に送れない状態になっていたのか。1週間気がつかなかったとか、もうプライベートではメールの利用頻度下がっているってことだねぇ。
さて、国外IPフィルタを無効化。
今日は朝からホットだった。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。