LoginSignup
2
0

More than 3 years have passed since last update.

Fetchmail で IMAP のメールをどこかに転送

Last updated at Posted at 2020-08-26

私の設定を並べておく。

まず、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

ここで -cset daemon 60 を無視して1度だけメールを取得して終了するオプション。 -f ファイル は設定ファイルの指定、 -v -v は ログの詳細度の増加. FETCHMAILHOME=/var/lib/fetchmail は、fetchmail ユーザのホームディレクトリの指定 (必要でないかもしれない)。

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0