私の設定を並べておく。
まず、fetchmail は 未読フラグを元に配送の可否を決める ので、事前にすべてのメールを既読にしておくこと。
インストール
sudo apt install fetchmail
vim /etc/default/fetchmail # START_DAEMON=yes にする
メール転送のSMTPサーバーとして exim4 も入れておく。
sudo apt install exim4
デーモン有効化 & 起動 (注意: 以下「確認」で動作確認しておいたほうがよい)
systemctl enable fetchmail
systemctl start fetchmail
/etc/fetchmailrc
以下の内容で、
- 60秒おきにフェッチ
- 未読メールを転送
- サーバーからメールを削除しない
という設定になる。
パスワードは平文になってしまうため、 chown root /etc/fetchmailrc; chmod go-rwx /etc/fetchmailrc
が必要。
set daemon 60
set postmaster root
set syslog
# 送信者にメールを返送しない(重要!)
set no bouncemail
defaults
bad-header accept
protocol auto
no mimedecode
no fetchall
# メールをIMAPサーバーから削除しない
keep
poll hostname.of.your.imap # IMAPサーバーのホスト名
protocol imap
port 993
# IMAP にログインするためのユーザ名/パスワード
username "your_user_name"
password "pasSsw0Rd"
ssl
# 転送先
smtpname "foobar@exapmle.com"
# 転送に使うSMTPサーバー
smtphost localhost
転送用ローカル SMTP サーバー (exim4) の設定
exim4 からプロバイダなりのメールサーバーを経由して送る。
注意しなければならないのは、Gmail だと (確か) From が送信者に書き換わってしまうことだ。私はプロバイダのメールを使っている。
/etc/exim4/update-exim4.conf.conf
sudo dpkg-reconfigure exim4-config
で設定して、以下のような内容であることを確認しておく。
dc_eximconfig_configtype='smarthost' # 'satellite' でもよいが, ローカルユーザー向けのメールも外に行ってしまう
dc_other_hostnames='your.host.name' # dpkg-reconfigure が適当に埋めるはず
dc_local_interfaces='127.0.0.1 ; ::1'
dc_readhost='your.host.name' # dpkg-reconfigure が適当に埋めるはず
dc_relay_domains=''
dc_minimaldns='false'
dc_relay_nets=''
dc_smarthost='your.smtp.server::25' # 適当に置き換える。プロバイダのメールなら hostname::port のようにコロンが2つでないとNG. プロバイダなら ::587 かもしれない
CFILEMODE='644'
dc_use_split_config='false'
dc_hide_mailname='true'
dc_mailname_in_oh='true'
dc_localdelivery='mail_spool'
/etc/exim4/passwd.client
送信メールサーバーに認証が必要なら、/etc/exim4/passwd.client
にユーザ名とパスワードを書いておく。
your.smtp.server:your_user_name:pasSw0Rd
確認
fetchmail を、上記の /etc/fetchmailrc
を参照しつつコマンドライン起動する。
sudo -ufetchmail bash
FETCHMAILHOME=/var/lib/fetchmail fetchmail -c -f /etc/fetchmailrc -v -v
ここで -c
は set daemon 60
を無視して1度だけメールを取得して終了するオプション。 -f ファイル
は設定ファイルの指定、 -v -v
は ログの詳細度の増加. FETCHMAILHOME=/var/lib/fetchmail
は、fetchmail ユーザのホームディレクトリの指定 (必要でないかもしれない)。