CentOS 7.0 - 複数ドメイン宛メールの集約 Fetchmail!

Updated:


「CentOS 7.0 - 複数ドメイン宛メールの集約 Fetchmail」についての記録です。

(旧バージョンでの作業記録を更新しました。興味がなければスルーしてください)

0. 前提条件

  • CentOS 7.0-1406(x86_64) を NetInstall で最小限インストールしている。
  • サーバ用途なので、作業は基本的に全て一般ユーザから root になって行う。
  • クライアント側は Linux Mint 17 を想定。
  • メールサーバ構築済みであること。
  • 例として、@nifty 宛メールと YahooMail 宛メール、POP3S の場合のメールを集約する。
  • メール転送先は “hoge@mk-mode.com” を想定。
  • 主に「CentOSで自宅サーバー構築」を参照。

1. Fetchmail インストール

# yum -y install fetchmail

2. Fetchmail 設定ファイル作成

対象のユーザになって作業を行なう。

File: .fetchmailrc

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
# 共通設定
set daemon 300 # 300秒間隔でメールチェックを行なう
set postmaster root # 最終的なメールの送信先
set no bouncemail # エラーメールをpostmasterに送る
set syslog # ログを/var/log/maillogに記録する

# 全サーバー共通デフォルト設定
defaults
  protocol auto
  no mimedecode
  no fetchall # 未読メールのみ取り込む
  #fetchall   # 既読・未読にかかわらず全てのメールを取り込む
  #no keep    # 取り込んだメールをサーバー上から削除する
  keep        # 取り込んだメールをサーバー上に残す

# @nifty アカウント宛メール取り込み設定
poll pop.nifty.com                           # <= @nifty 受信メールサーバ名
  username "XXX99999"                        # <= @nifty ユーザ名
  password "xxxxxxxx"                        # <= @nifty パスワード
  mda "/usr/sbin/sendmail hoge@mk-mode.com"  # <= 転送先メールアドレス

# YahooMail アカウント宛メール取り込み設定
poll pop.mail.yahoo.co.jp                    # <= YahooMail 受信メールサーバ名
  user "XXXXX999999"                         # <= YahooMail ユーザ名
  pass "xxxxxxxx"                            # <= YahooMail パスワード
  mda "/usr/sbin/sendmail hoge@mk-mode.com"  # <= 転送先メールアドレス

# POP3S が提供されているプロバイダの場合
poll xxxxxxxx                                # <= プロバイダ受信メールサーバー名
  protocol pop3                              # <= プロトコル
  port 995                                   # <= ポート
  username "xxxxxxxx"                        # <= プロバイダユーザ名
  password "xxxxxxxx"                        # <= プロバイダパスワード
  ssl                                        # <= SSL
  mda "/usr/sbin/sendmail hoge@mk-mode.com"  # <= 転送先メールアドレス

3. Fetchmail 設定ファイル権限設定

所有者以外参照できないように Fetchmail 設定ファイルに権限を設定する。

$ chmod 600 .fetchmailrc

4. Fetchmail 起動用 systemd テンプレート作成

ここからは root ユーザになって作業を行う。

File: /lib/systemd/system/fetchmail@.service

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=A remote-mail retrieval utility
After=network.target postfix.service

[Service]
User=%I
ExecStart=/usr/bin/fetchmail
RestartSec=1

[Install]
WantedBy=multi-user.target

5. Fetchmail 起動スクリプト作成

File: fetchmail-start.sh

1
2
3
4
5
6
7
8
9
#!/bin/sh

for user in `ls /home/`
do
    if [ -f /home/$user/.fetchmailrc ]; then
        echo "fetchmail for $user starting..."
        systemctl start fetchmail@$user
    fi
done

6. Fetchmail 起動用 systemd 設定ファイル作成(全ユーザ用)

File: /lib/systemd/system/fetchmail-start.service

1
2
3
4
5
6
7
8
9
10
11
[Unit]
Description=Fetchmail Auto Start
After=network.target postfix.service

[Service]
Type=oneshot
ExecStart=/bin/sh /root/fetchmail-start.sh
RestartSec=1

[Install]
WantedBy=multi-user.target

7. Fetchmail 起動

# systemctl start fetchmail-start

8. Fetchmail 自動実行設定

# systemctl enable fetchmail-start
# systemctl list-unit-files -t service | grep fetchmail-start
fetchmail-start.service                     enabled  # <= enabled であることを確認

9. 動作確認

転送元宛のメールが転送先に届くか確認する。(上記の設定では 300 秒(5分)間隔で転送される)


以上。





 

Sponsored Link

 

Comments