メール自動バックアップ

自分メモ。

  1. Linuxコンピュータ上のメールアカウントを一つ、バックアップ専用にする。
  2. メール転送(.forward)を次のように設定。
    "| cat >> mail_`date +%Y%m%d%H%M%S`_$$.txt"
  3. バックアップ用ftpサーバへメールを送るPerlスクリプトを次のように作成。ファイル名は例えばsavemail.plとでも。
#!/usr/bin/perl

$ftphost = "バックアップ用コンピュータのホスト名";
($username, $password) = ("ログインアカウント", "パスワード");
$ftpdir = "ファイルを入れるディレクトリのパス名";

($sec,$min,$hour,$mday,$mon,$year,undef,undef,undef) = localtime(time);
$filepre = sprintf("%04d%02d%02d%02d%02d%02d_%d_", 1900+$year, $mon, $mday, $hour, $min, $sec, $$);

use Net::FTP;
$ftp = Net::FTP->new($ftphost);
$ftp->login($username, $password);
$ftp->binary;
$ftp->cwd($ftpdir);

$n = 0;
open(FILELIST, "find -maxdepth 1 -name 'mail_*.txt' -print |") || die;

while ($srcfile = <FILELIST>) {
	chomp $srcfile;
	$dstfile = $filepre . ++$n . ".eml";
	if ($ftp->put($srcfile, $dstfile)) {
		unlink $srcfile;
		print "saved: $srcfile as $dstfile¥n";
	}
	else {
		print "not saved: $srcfile¥n";
	}
}

close(FILELIST);

$ftp->quit;

exit 0;
  1. 作ったPerlスクリプトを定期的に実行する為に下記を crontab に食べさせる。
    1-59/15 * * * * /usr/bin/perl $HOME/savemail.pl >> $HOME/savemail.log
  2. 保存されたファイルは .eml ですが、とりあえずファイルをダブルクリックするとOutlook Expressで読めることだけ確認済み。でもOutlook Expressのウィンドウで削除ボタンを押すと、ファイルがゴミ箱へ移されてしまいます :-p

おしまい。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です