ガジェットつれづれ
ガジェットについて
fetchmail+procmailで携帯へメール転送
※この記事は2009年10月にブログに上げた記事の書き直しです。
fetchmailで複数のアカウントのメールを携帯に転送する方法について。自分の設定のまとめ。使用しているのはFreeBSDが稼働する自宅サーバ。
fetchmailをデーモン起動し、pop3にて複数サーバからメールを取得し、これをprocmailに渡して、必要なメールだけをフィルタリングして携帯のアドレスに送信している。以下に僕の場合の例として紹介します。
なお、 fetchmail release 6.3.8+RPA+SDPS+SSL+OPIE+NLS / procmail v3.22 です。
インストール
% cd /usr/ports/mail/fetchmail
% make
% make install
% cd /usr/ports/mail/procmail
% make
% make install
基本設定
上記のインストールで、
/usr/local/etc/rc.d/fetchmailが自動生成されていた。これがデーモンでのfetchmailの起動コマンドになる。すなわち
/usr/local/etc/rc.d/fetchmail start ←起動
/usr/local/etc/rc.d/fetchmail restart ←再起動
/usr/local/etc/rc.d/fetchmail stop ←停止
とできる。
fetchmail を root で使うことは推奨されていない。FreeBSD上にあるいずれかのユーザーで使うようにする。
どのユーザーで使用できるようにするかを、利用の有効化と合わせて、/etc/rc.conf に設定する。
ここでは仮に hoge ユーザーで使用することにする。ユーザーはスペース区切りで複数指定できる。なお、ポーリングのインターバル時間(何秒毎にメールサーバに問い合わせるか)も合わせて設定。
↓ /etc/rc.conf に追加する設定の記述
fetchmail_enable="YES"
fetchmail_users="hoge"
fetchmail_polling_interval="180"
転送設定
fetchmail
fetchmailの設定自体は、上記で使うことにしたユーザーのホームディレクトリに .fetchmailrc ファイルを作って行う。つまり、.fetchmailrc があれば自動的に読み込まれ、指定のインターバルで実行される。以下のように設定した。
なお、このファイルのパーミッションは 600 にすること。> chmod 600 .fetchmailrc
↓/home/hoge/.fetchmailrc の設定
set postmaster hoge
set logfile fetchmail.log
defaults
protocol pop3
uidl
no rewrite
no mimedecode
keep
mda "/usr/local/bin/procmail"
poll pop.smallmake.com
username "hogege"
password "********"
poll pop3.nifty.com
username "hogege"
password "*******"
poll pop.appale.com
username "ichirohoge"
password "********"
poll pop.atandta.net
username "info"
`password "********"
keep の指定によってサーバーにメールを残している。この場合のポイントは、 udil の指定。これは一度転送したメールは転送しない設定。これがないとインターバル時間毎に、同じメールを何回も送って来てしまう。protocol 指定の直後に指定しておくのがよいようだ。
そして、mda としてprocmail コマンドを指定。これで、メールをprocmailに引き渡せる。
poll 指定のあとに、メールサーバーとアカウント名とパスワードを指定。複数指定できる。
procmail
procmail もホームディレクトリに設定用ファイルを作る。ファイル名 .procmailrc である。
↓/home/hoge/.procmailrc の設定
TRANSTO=hogenokeitai@docomo.ne.jp
:0
* ^Subject:.*TASK-ML.*
/dev/null
:0 E
* ^Subject:.*Report www.appale.com.*
/dev/null
:0 E
* ^To:.*hogege@smallmake.com.*|^To:.*ichiro@smallmake.com.*
!$TRANSTO
:0 E
* ^To:.*hogege@nifty.com.*
!$TRANSTO
:0 E
* ^To:.*info@atandta.net.*
{
:0
* ^From:.*@ atandta.net.*|^From:.*@ atandta-net.com.*
* ! ^From:.*info@ atandta.net.*
!$TRANSTO
}
:0はプログラム構文の IF にあたり、 ":0 E" は ELSE IF にあたると考えてよい。つまり僕の場合、頭から条件に当てはまるものを順に処理し、前の条件で処理しなかったものを次の処理に回わすようにしている。
*で始まる行が条件の内容で一致した場合にその次の行の評価または実行を行う。なお、ここでは全てメールのヘッダを対象に検査している。メール本文を検査したい場合は、上記の指定を:0 Bと記述するらしいが僕の場合は使用していない。また、ELSE IF ではなく、前に評価したものをさらに次の条件でも検査したい場合 :0 cと書くらしいが、これも今回は使わなかった。条件の内容については ORは | で、 NOT は ! で記述できる。また"{" と "}" でくくることで条件をネストできる。
"!" で始まる行がメール転送先の指定。転送先は冒頭でTRANSTOという変数を作って代入し、それを参照している。dev/nullはその条件に当てはまるメールをnullに捨てて、転送しない設定である。転送やnull指定以外にもファイルに書き出したりなどする方法もあるが、今回は使っていない。
だいたい以上のような内容である。FreeBSDが起動したときにfetchmailがデーモンとして自動起動するようにしたいが、それについてはまだやっていない。
記事一覧
-
ステイホームでの机まわりガジェット 、その後。
2026-01-11 -
ステイホームでの机まわりガジェット その2
2026-01-11 -
ステイホームでの机まわりガジェット その1
2026-01-11 -
NHK番組表APIを使ってキーワード監視と通知
2026-01-03 -
パワーサポートiPad mini4用ケースをiPad mini5で使う
2026-01-11 -
1984年のMachintoshタッチスクリーンタブレット プロトタイプ
2026-01-11 -
サンフランシスコ旅行でモバイル・ルーターのレンタル(関空で)
2026-01-11 -
Magic Mouse のスクロールをもっと速くする
2026-01-11 -
GoodReaderをFTP(Mac)で同期
2026-01-11 -
アップル – スカリーとHyperCardの時代
2026-01-03 -
fetchmail+procmailで携帯へメール転送
2026-01-11