WindowsLiveメールではアカウント情報を.iafという形式でエクスポートしたりインポートしたりすることができます。
多くのPCにメールをセッティングする場合、このiafファイルを一括で作成して配布すれば簡単に終わるのではないかと思い、iafファイルの作成方法について調べてみました。
ID、パスワード、POP・SMTPサーバ名を伝えて「各自設定してくださいー^^」で終わりそうな話ですが、そうもいかないケースが往々にしてあります…。
ADs
IAF decoder coderはPHPで書かれたiafファイルの生成や解析を行うライブラリです。ライセンスはGPLとなってます。
CPANモジュールのWin32::Outlook::IAFをPHPに移植したものとなっています。Perlが書ければこちらのモジュールを使いたかったのですが、私はPerlがさっぱり分からないのでPHPで書くことにしました。
生成したいiafファイルが一つだけであれば手作業でメール設定を行っても大した手間ではないので、CSV形式で入力して大量のiafファイルを一気に作成できるようなスクリプトを書いてみました。
前提条件として
・POPサーバ/SMTPサーバはpop3.example.com/smtp.example.com である
・SMTP認証が有効で、そのときのアカウント・パスワードはPOPサーバと同じ
・受信ポートは110、送信ポートは587
・送信元メールアドレスは設定されるアドレスと同じ
ということにしてiafを生成します。
細かい設定が必要な場合は後述のgenerate.php内を修正して使ってください。
入力が必要な内容は「ドメイン名」「@の前,アカウント名,パスワード」のみとしています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<form action="generate.php" method="post"> <article> <input type="text" name="domain" placeholder="example.com" /> </article> <article> <h1>Step 2.1アカウントごとに改行しながら「@の前,アカウント名,パスワード」を入力してください。</h1> <textarea name="account" cols="30" rows="10" placeholder="yamada,abcd123,password"></textarea> </article> <article> <div class="text-center"> <button>生成する!</button> </div> </article> </form> |
上記の入力内容を受けて、iafファイルを生成します。
複数のiafファイルをzipにしてダウンロードする、という処理となっています。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 |
//POST受ける if($_POST){ require_once 'File_Format_Iaf.php'; //zipする $zip = new ZipArchive(); $zipname = 'iaf.zip'; if(file_exists('./'.$zipname)){ unlink('./'.$zipname); } else { $zip->open('./'.$zipname, ZipArchive::CREATE); } $domain = $_POST['domain']; $pop = 'pop3.'.$_POST['domain']; $smtp = 'smtp.'.$_POST['domain']; //アカウント一覧の配列化 $accounts = $_POST['account']; $br = array("\r\n", "\r"); $accounts = trim($accounts); $accounts = str_replace($br, "\n", $accounts); $accounts_arr = explode("\n", $accounts); //ループ foreach($accounts_arr as $val){ $iaf = new File_Format_Iaf(); $item = explode(',',$val); $email = $item[0].'@'.$domain; $iaf->AccountName = $email; $iaf->POP3Server = $pop; $iaf->POP3SecureConnection = 0; $iaf->POP3LeaveMailOnServer = 0; $iaf->POP3SkipAccount = 0; $iaf->POP3PasswordPrompt = 0; $iaf->POP3UserName = $item[1]; $iaf->POP3Password = $item[2]; $iaf->SMTPAuthMethod = 2; $iaf->SMTPPort = 587; $iaf->SMTPSecureConnection = 0; $iaf->SMTPDisplayName = $email; $iaf->SMTPEmailAddress = $email; $iaf->SMTPServer = $smtp; $iaf->SMTPPasswordPrompt = 0; $zip->addFromString($email.'.iaf',$iaf->render()); } $zip->close(); header('Content-Type: application/zip; name="'.$zipname.'"'); header('Content-Disposition: attachment; filename="' . $zipname . '"'); header('Content-Length: '.filesize($zipname)); echo file_get_contents($zipname); unlink('./'.$zipname); exit(); } ?> |
セキュリティ対策を取っていません。実際に運用しているメールのアカウントやパスワードを入力することはやめてください。
メールのアカウントやパスワードというデリケートな内容を扱うため、非公開のサーバ上で動作させるほうが望ましいでしょう。
File_Format_Iaf.phpを見てみると分かるのですが、POPだけでなくIMAPの設定で作成できたりWindowsLiveメールのアカウント設定で指定可能なオプションのほとんどが指定できます。
1 2 3 4 5 6 7 8 9 10 11 |
//以下、POP用の設定の一部 'POP3Server' => array('331613168', 'nullstr_fmt', '', ''), 'POP3UserName' => array('331678704', 'nullstr_fmt', '', ''), 'POP3Password' => array('331744246', 'nullstr_fmt', '', 'iaf_password'), 'POP3AuthUseSPA' => array('331875317', 'ulong_le_fmt', 'bool_re', ''), 'POP3Port' => array('331940841', 'ulong_le_fmt', 'num_re', ''), 'POP3SecureConnection' => array('332006389', 'ulong_le_fmt', 'bool_re', 'iaf_bool'), 'POP3Timeout' => array('332071913', 'ulong_le_fmt', 'num_re', ''), //以下略 |
中には単純な文字列ではなく、0/1/2などの数字を入力して指定する必要のある箇所がありますが、それぞれの数字が何を意味しているのかよく分かりません。
そのような場合は実際に動作しているメールアカウントからiafファイルをエクスポートし、解析することで設定値を判断することができます。
以下のようにloadという処理でファイルを読み、getFields()という処理を実行すれば現状の設定値が表示されます。
1 2 3 4 5 |
require_once 'File_Format_Iaf.php'; $iaf = new File_Format_Iaf(); $iaf->load('iafファイル名'); print_r($iaf->getFields()); |
結果は以下の様に表示されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
Array ( [AccountName] => yamada@example.com [POP3Server] => pop3.example.com [POP3SecureConnection] => 0 [POP3LeaveMailOnServer] => 0 [POP3SkipAccount] => 0 [POP3PasswordPrompt] => 0 [POP3UserName] => abcd123 [POP3Password] => passwd [SMTPAuthMethod] => 2 [SMTPPort] => 587 [SMTPSecureConnection] => 0 [SMTPDisplayName] => yamada@example.com [SMTPEmailAddress] => yamada@example.com [SMTPServer] => smtp.example.com [SMTPPasswordPrompt] => 0 ) |
ADs
コメントはまだありません。