i.softbank.jp宛メールをfetchmailでGmailにリアルタイム転送 "i.softbank.jpとGmailの統合" http://bit.ly/aDNuRa
(http://twitter.com/hitoriblog/status/28971894276)
(http://twitter.com/hitoriblog/status/28971894276)
iPhone発売当時、SMS/MMSに対応しないiPhoneへの苦肉の策として導入されたi.softbank.jpというアドレス。私がiPhoneを手にした時はちょうどMMS対応するかしないかくらいのタイミングだったので、私自身はほとんど使っていないし、周りにも使っている人がいない(みんな覚えてもない?)という可哀想な子なのですが、このアドレスには実は他にはないすばらしい特徴があります。
・キャリア回線不要で使えるただのIMAPメール
・携帯各社の中では携帯メールとして認識されている
つまり、回線にも機材(端末)にも全く縛られないメールでありながら、「携帯メールのみ受け取り」と設定している相手にちゃんと届くメールなのです。これを活用しない手はない、とi.softbank.jpとGmailを統合してしまったのが最初の呟きで紹介されていたblog記事でした。
これは私もやってみたい!と思い、記事の通りに設定を始めた(記事の内容が完璧なのでここでは省略…手抜きですいません)のですが、一つ困ったことが。紹介されていた手順では自分のサーバ内にメール送信をしてくれる人(sendmailとかですね)がいることが前提になっているのですが、私はその環境を持っていません。入れて入らないことはないのですが、出来れば送信サーバはGmailとか既存のサービスを使いたい…と思って苦悩していたら、SHIMI.INFOでおなじみ清水さんが「このスクリプト使ってごら〜ん」と助け船を出してくださいました。
str2imap.rb
#!/usr/bin/ruby
require 'net/imap'
IMAP_SERV = 'imap.gmail.com'
IMAP_PORT = 993
IMAP_SSL = true
folder = ARGV[0] || 'INBOX'
user = 'Gmailのユーザ名'
pass = 'Gmailのパスワード'
begin
imap = Net::IMAP.new(IMAP_SERV, IMAP_PORT, IMAP_SSL)
imap.login(user, pass)
begin
imap.examine(folder)
rescue
if folder =~ /[^\w]/ then
folder = Net::IMAP.encode_utf7(folder)
end
imap.create(folder)
end
rawmail = ''
STDIN.each { |l|
rawmail << l
}
if rawmail.gsub(/[\n|\r]+/, '').length == 0 then raise 'NO data input.' end
imap.append(folder, rawmail, nil, Time.now)
imap.logout
rescue => err
puts err.to_s
imap.logout
exit 1;
end
exit 0;
require 'net/imap'
IMAP_SERV = 'imap.gmail.com'
IMAP_PORT = 993
IMAP_SSL = true
folder = ARGV[0] || 'INBOX'
user = 'Gmailのユーザ名'
pass = 'Gmailのパスワード'
begin
imap = Net::IMAP.new(IMAP_SERV, IMAP_PORT, IMAP_SSL)
imap.login(user, pass)
begin
imap.examine(folder)
rescue
if folder =~ /[^\w]/ then
folder = Net::IMAP.encode_utf7(folder)
end
imap.create(folder)
end
rawmail = ''
STDIN.each { |l|
rawmail << l
}
if rawmail.gsub(/[\n|\r]+/, '').length == 0 then raise 'NO data input.' end
imap.append(folder, rawmail, nil, Time.now)
imap.logout
rescue => err
puts err.to_s
imap.logout
exit 1;
end
exit 0;
このスクリプトを/home/hoge(場所はどこでもいいですよ)に配置したら、.fetchmailrcを以下の通り記述します。
.fetchmailrc
set postmaster Gmailのユーザ名@gmail.com
set nobouncemail
poll imap.softbank.jp
proto imap
timeout 30
username i.softbankのユーザ名
password i.softbankのパスワード
idle
no mimedecode
keep
mda "/home/hoge/str2imap.rb"
set nobouncemail
poll imap.softbank.jp
proto imap
timeout 30
username i.softbankのユーザ名
password i.softbankのパスワード
idle
no mimedecode
keep
mda "/home/hoge/str2imap.rb"
あとはfetchmailを起動するだけ。
動きっぱなしになるので完全な裏起動にしましょう。
nohup fetchmail > /dev/null 2>&1 &
これでi.softbank.jpに送られたメールは即時にGmailに転送されます。
これならSIMなしの端末からでもメール送れるし、そもそもどの端末、どの回線を使っているかを全く相手に意識させずにこちらが自由に振る舞える。これはある意味真のMNPかも。全キャリア共通でIMAPなメールサーバ作ってくれないかなー。
moyashiさん、清水さん、いのたん♪さん、どうもありがとうございました!
管理人の部屋: i.softbank.jpとGmailの統合
http://gtbleds18.blogspot.com/2010/04/isoftbankjpgmail.html
Togetter - 「i.softbank.jpをGmailに統合するための試行錯誤」
http://togetter.com/li/65323