本日より 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 は2004年12月に招待してもらって登録していたのだが、アカウントは Google の各種サービス用として使っていたものの、メールボックスはほぼ全く使用していなかった。 なんだかんだいって抵抗感があった訳で。
しかし、
ということからメールボックス Gmail に集約してしまうことにした。
やった事は以下。
pwgen で自動生成したパスワードを使っていたのだが、今後入力する機会が増えるので覚えられるものに変更。
普段使っている MUA である Mew のバージョンを 4 から 5 にバージョンアップ (Debian sid の Debian パッケージが上がった時に、ホールドしたままだった)。
もれなく k-/ が Namazu から Hyper Estraier になっていた。
「Gmail から直接」および「Gmail の SMTP サーバ経由」で普段使っているメールアドレスを使って送信できるようにアカウントを登録。
Web の設定画面で追加するとメールで確認コードが送られてくるので、それを使って有効化する。
Gmail 側で POP を有効にした後、fetchmail で fetch できるようにする。
defaults no mimedecode pass8bits poll pop.gmail.com protocol pop3 user xxx@gmail.com password xxx ssl fetchall
SSL を使用して fetch できるようしておく。
設定を始めるまでは「POP3 で Gmail アカウント使うのどうよ」と思っていたけれど、SSL 経由なのでちょっと安心した。
POP 後 Gmail 側ではアーカイブに移動するようしておく。
今まで SMTP over SSH でホスティングサービス経由等で送っていたものを、Gmail に TARTTLS を使って送れるように設定する。
mew-config-alist の中で
("default" ("user" . "naney") ("mail-domain" . "naney.org") ("smtp-server" . "smtp.gmail.com") ("smtp-user" . "xxx@gmail.com") ("smtp-ssl" . t))
送信メールアドレスは user と mail-domain で設定。Gmail のアカウント名は smtp-user で設定。 smtp-ssl も t にしておく。
その他メールアドレス毎に経路を変えて送ったりしていたのだが全部同様の設定にして Gmail 経由にする。
今まで Dcc で自分宛にコピーを送って管理していたのだが、Gmail では自分が SMTP 経由で送信したメールは POP できないらしい。 げっ。
ということで Fcc を
(setq mew-fcc "+sent")
から
(setq mew-fcc "+sent,+inbox")
に変更して、sent/ 以外に inbox/ にも複製を作るようにして対処。
普段使っている各メールアドレスのメールボックスから、全て Gmail へ転送するように設定。 たまっていた分は今まで通りの方法で fetch してクリアしておく。
Gmail カスタムボタンを表示するように変更。 ツールバーから Gmail にアクセスできるようにしておく。
Gmail アカウントを登録。 Google デスクトップで Gmail 上のメールを検索できるようにしておく。
試しに使ってみる。
モバイル Gmail から送られるメールの From: は Gmail でデフォルト設定したもので固定らしい。 ちょっと融通が効かない。
ま、プライベートのメールはiモードメールで送ってしまっても良いので、Gmail のデフォルトのメールアドレスを仕事用のに設定しておくことで対応しよう。
これで大体設定完了。
メリットは以下。
Gmail で言うところのスレッドについては、ちょっと慣れが必要そうだな。
なにはともあれ、一気に移行してしまった。 細かい所で違和感がまだあるけれども、いずれ慣れるだろう。 きっとその時は便利に感じるに違いない。
ようやくこれで本当の Gmail ユーザだ。
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 は通して欲しいなぁ。
今朝見たら 自分の Google アカウントにも Google Buzz がやってきていた。 さっそく Twitter と Flickr を関連付けたけれど、まてよと思いすぐに外した。
気になったのが「頻繁にメールやチャットのやりとりをしている相手が自動的にフォローされる」という説明。 自動的にフォローするということは自動的にフォローされる可能性もあるということだ(実際にはフォローまではしなくて候補にでるだけなのかも)。
今メールは基本的に1つの Gmail アカウントに集約していて仕事関連のコンタクトも登録してあるので、何かの拍子で仕事相手の人に(何となくで) Google Buzz フォローされたらどうなのと。 Web に自己紹介も Twitter アカウントも晒しているので、興味をもって見てもらえること自体は全くもっていいのだが、何となく見られて「ふーん」っていう感じは嫌だよなあと。
ということでいい機会なので仕事用の Gmail アカウントを別に作ることにした。Android 使うのに向けて Google アカウントとサービスの利用について整理しなければと思っていたところだし。
仕事のメールアドレスでとって Google カレンダーや Google ドキュメントなどで使っている Google アカウントに Gmail アカウントを作成し設定していった。
これで気をつけなければならない点は、新 Gmail アカウントを使って Web 上からメールを送信すると現 Gmail アカウントにコピーが残らないという点ぐらいかな(Cc / Bcc しておかない限り)。 基本的にはほとんど Mew から送信しないから問題ないか。
Google アカウントに Gmail 追加後「既存のメールアドレスを Google アカウント予備メールアドレスから削除」「Gmail で送信者として追加」「Google アカウント予備メールアドレスに再び追加」で解決するようだ。
コンタクトリストの指定したグループのみに投稿を限定公開できるという機能が、Twitter ではできなかった組織内限定コミュニケーションで使えそうかなと期待している。 従来は Twitter クローンを立ち上げるか、そういう企業向けマイクロブログサービスを使う必要があったが、小規模なものにについては Google Buzz で気楽にできそうだ。
現 Gmail アカウント上では Google Buzz 今まで通りのネット活動として Google Buzz を利用し、新 Gmail アカウント上では社内・チーム内でのツールとして活用してみたい。
新しい開発プロジェクトでは Git + Redmine を使おうと思う。 で例により使えるのが Red Hat Linux 8.0 サーバなので対応する Ruby やライブラリを含めてソースコードからビルドしてインストールしたのだが、ちょっとハマったのでメモ。
システムにインストールされている OpenSSL を(パッケージがなくアップデートできないので)残したまま、新しい OpenSSL をいれて使うのだが Ruby でこれを使えるようにする方法に辿りつくまで8割の時間を費した。
OpenSSL のデフォルトである /usr/local/ssl へビルドしてインストールする。
tar zxvf openssl-1.0.0b.tar.gz cd openssl-1.0.0b ./config shared make make test make intall
何も指定しないと共有ライブラリ(so)がビルド・インストールされないのが落とし穴。
後は /usr/local/redmine 以下に Redmine に必要なものを入れる。
tar jxvf ruby-1.8.7-p302.tar.bz2 cd ruby-1.8.7-p302 CFLAGS='-I /usr/local/ssl/include' \ LDFLAGS='-L /usr/local/ssl/lib -Wl,-rpath=/usr/local/ssl/lib' \ ./configure --prefix=/usr/local/redmine --enable-rpath make make install
大きな落とし穴は Ruby に含まれている ext/openssl。 OpenSSL 用の共有ライブラリが作られるのだが、いくらやってもこいつが /lib に入っている古い OpenSSL 共有ライブラリの方をリンクしてしまい /usr/local/ssl/lib の方をリンクしてくれない。
configure や make 時に LD_RUN_PATH やら -rpath を指定しても効かないし、ext/Setup で openssl を静的に指定しても駄目だし。
結局 configure.in を眺めて AC_ARG_ENABLE(rpath, ...) があるのを発見して --enable-rpath したところようやく -rpath が共有ライブラリのビルドに反映されるようになった。
30m ぐらいの深さの大きい落とし穴。
/usr/local/redmine に Ruby が入ったので必要なものを入れていく。 確実にそこの Ruby を使うようにしばらくは /usr/local/redmine/bin 以下を絶対パス指定で作業。
tar zxvf rubygems-1.3.7.tgz cd rubygems-1.3.7/ /usr/local/redmine/bin/ruby setup.rb
Redmine のデータベースは一番お手軽な SQLite を使う。これもインストール。
tar zxvf sqlite-amalgamation-3.7.3.tar.gz cd sqlite-3.7.3 ./configure --prefix=/usr/local/redmine make make install
Ruby から SQLite を使うためのライブラリをインストール。
/usr/local/redmine/bin/gem install sqlite3-ruby -- --with-sqlite3-dir=/usr/local/redmine
SQLite のありかを示す --with-sqlite3-dir を -- の次に指定するというところに気がつくのに浅い落とし穴。
Redmine のインストールの説明では Passenger を推奨しているようなので入れてみる。
/usr/local/redmine/bin/gem install passenger
OK。しかし Apache モジュールを
/usr/local/redmine/bin/passenger-install-apache2-module
でインストールしようとすると失敗。Apache の dev 系のファイルがシステムに入っていないので、それはそうだな。しかし Passenger のコマンドは寡黙ではなく何が駄目で何をすべきかきちんと表示してくれるのでわかりやすい。
この落とし穴は、横を通って回避。
Passenger のインストールで最新の Rack が一緒にインストールされるのだが、Redmine には新しすぎて後の手順でエラーで止まる。 ので、ここで 1.0.1 にダウングレードしておく。
/usr/local/redmine/bin/gem install rack -v 1.0.1
これは皆が知っている落とし穴。
ようやく Redmine のインストール。 展開するだけ。
tar zxvf redmine-1.0.3.tar.gz mkdir -p /usr/local/redmine/var/lib mv redmine-1.0.3 /usr/local/redmin/var/lib/redmine
以下 /usr/local/redmine/var/lib/redmine で作業。
cd /usr/local/redmine/var/lib/redmine
config/database.yml を作成する。SQLite を使うように設定。
production: adapter: sqlite3 database: /home/naney/var/redmine/redmine.db
データベースは定期バックアップのある自分の home 以下に。
makdir -p ~/var/redmine
config/email.yml を作成する。今回は専用の redmine@example.com を作成して、その SMTP サーバ/アカウント経由で送信するようにする。
production: delivery_method: :smtp smtp_settings: address: smtpserver.example.com port: 25 domain: redmine.example.com user_name: "redmine@example.com" password: "mypassword"
必要なファイルやらデータベースの初期化やらを行う。
/usr/local/redmine/bin/rake config/initializers/session_store.rb /usr/local/redmine/bin/rake db:migrate RAILS_ENV=production /usr/local/redmine/bin/rake redmine:load_default_data RAILS_ENV=production
最後のコマンドでは言語を選ぶプロンプトが出るので ja を指定。
Apache 経由ではなく Passenger スタンドアローンで Redmine を使ってみる。
/usr/local/redmine/bin/passenger start
失敗。途中の処理で rake が見つからないという。
PATH=/usr/local/redmine/bin:$PATH passenger start
やっぱり失敗。自動的にダウンロードした ngix のビルドに失敗しているっぽい。 落とし穴。
/usr/local/redmine/bin/ruby script/server webrick -e production
Redmine 的には 本番向けではない WEBrick は無事起動。
http://インストールしたサーバ:3000/
にブラウザにアクセス。Redmine のページが見えたよオッカサン! admin:admin でログインしてあとは Web ブラウザから設定。 Git リポジトリの連携もすんなり。
やったね。
WEBrick で使い続けるなら script/server 起動時に -d オプションを指定する(記事)。
Naney (なにい) です。株式会社MIXIで SNS 事業の部長をしています。
※本サイトの内容は個人的見解であり所属組織とは関係ありません。