「Fdm」の版間の差分
(→設定: 情報を更新) |
(パスワードマネジメントの項目を翻訳して追加) |
||
| 64行目: | 64行目: | ||
{{Tip|{{ic|.netrc}} ファイルでログイン名とパスワードを指定することもできます。}} |
{{Tip|{{ic|.netrc}} ファイルでログイン名とパスワードを指定することもできます。}} |
||
| + | |||
| + | == パスワードマネジメント == |
||
| + | |||
| + | メールアカウントのパスワードは、設定ファイルにプレーンテキストで保存するか、シェルコマンドでパスワードマネージャーやキーリングから要求することができます。{{ic|$(cmd ...)}} 方式 |
||
| + | |||
| + | === パスワードマネージャーの使用 === |
||
| + | |||
| + | 以下は、'''pass'''を使った例です。 |
||
| + | |||
| + | account "foo" imaps server "imap.example.com" |
||
| + | user "foo@example.com" pass $(pass foo-email-entry | head -1) |
||
| + | |||
| + | === Gmail の OAuth2 認証 === |
||
| + | |||
| + | fdm は OAuth2 アクセストークンを使用することができ、'''gmail''' でも使用することができますが、OAuth2 認証情報の更新や認証の機能が欠けています。包括的な解決策としては、[https://github.com/pdobsan/mailctl mailctl] ユーティリティを使用することで、IMAP/SMTP クライアントに OAuth2 認証情報の更新と認証の機能を提供することができます。 |
||
| + | |||
| + | 設定例: |
||
| + | |||
| + | account "foo" imaps server "imap.gmail.com" |
||
| + | user "foo@gmail.com" |
||
| + | pass $(mailctl access foo@gmail.com) |
||
| + | oauthbearer |
||
| + | |||
| + | アクセストークンの更新はユーザーから見えないようにバックグラウンドで自動的に行われます。 |
||
| + | '''mailctl'' は AUR からバイナリパッケージとして入手できます: {{AUR|mailctl-bin}} |
||
| + | |||
| + | === cron からの実行 === |
||
| + | |||
| + | 上記の例はインタラクティブに使用する分には問題ありませんが、cron ジョブから使用する場合は少し複雑です。 |
||
| + | というのも、呼び出されるプログラムのいくつかは、特定の環境を期待することがあるからです。 |
||
| + | ラッパー・スクリプトを使用し、必要な環境変数をエクスポートすることで、この問題を回避することができます。 |
||
| + | ここでは、そのようなスクリプトのためのいくつかのトリックを紹介します。 |
||
| + | |||
| + | ... |
||
| + | # パス |
||
| + | export PASSWORD_STORE_DIR=~/.local/var/password-store |
||
| + | ... |
||
| + | # gnome のキーリングを使用する場合 |
||
| + | # secret-tool はこの2つの envar が必要です |
||
| + | # そこで、このスクリプトが cron ジョブで実行されるために、それらを偽造します。 |
||
| + | export DISPLAY=${DISPLAY:-:0} |
||
| + | export DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS:-unix:path=/run/user/$UID/bus} |
||
| + | ... |
||
== テスト == |
== テスト == |
||
| 90行目: | 133行目: | ||
これで {{ic|''bar@gmail.com''}} 宛の全てのメールが {{ic|''bar-mail''}} メールフォルダに行くようになります。 |
これで {{ic|''bar@gmail.com''}} 宛の全てのメールが {{ic|''bar-mail''}} メールフォルダに行くようになります。 |
||
| − | === |
+ | === 自動化 === |
| + | |||
| + | fdm はデーモンとして動作しないので、メールの時間指定は [[cron]] や [[Systemd/Timers|systemd timers]] のようなジョブスケジューラに任されています。 |
||
| + | このセクションでは、その両方の実装を紹介します。 |
||
| + | |||
| + | ==== cron による自動化 ==== |
||
| + | すべてのアカウントから 15 分ごとにメールを取得して並べ替え、一致するすべてのログをローカル ファイルに追加します。: |
||
| − | [[cron]] ジョブを設定することで定期的にメールをチェックすることができます: |
||
| − | + | {{hc|$ crontab -e| |
|
| + | ... |
||
| − | */15 * * * * fdm fetch >> $HOME/[Mm]ail/fdm.log |
||
| + | */15 * * * * fdm fetch >> $HOME/[Mm]ail/fdm.log |
||
| + | }} |
||
== 参照 == |
== 参照 == |
||
2022年11月18日 (金) 02:45時点における版
fdm (fetch and deliver mail) はメールを取得・フィルタリングするシンプルなプログラムです。同じ用途で使われる他のプログラムと比べて、Mutt と同じような設計思想で作られています。
目次
インストール
設定
fdm は設定ファイルを通じて構成できます。
デフォルトは ~/.fdm.conf または /etc/fdm.conf 存在しない場合
詳細については、マニュアル ページ fdm(1)、fdm.conf(5)、および
/usr/share/doc/fdm-git/MANUAL を見てください。
mbox
Alpine は mbox フォーマットを使用するため、複数のファイルを作成する必要があります:
$ cd $ mkdir mail $ touch mail/INBOX .fdm.conf $ chmod 600 .fdm.conf mail/INBOX
maildir
Mutt は大文字のメールディレクトリを使用し、maildir フォーマットを使うことができます。Mutt を使う場合は以下のようにセットアップしてください:
$ cd
$ touch .fdm.conf; chmod 600 .fdm.conf
$ mkdir -p Mail/INBOX/{new,cur,tmp}
最終設定
.fdm.conf を編集して、メールアカウントと基本的なフィルタールールを追加してください。mbox か maildir のどちらかを使います。
## .fdm.conf
## Accounts and rules for:
#> foo@example.com
#> bar@gmail.com
## Last edit 21-Dec-09
# Catch-all action (mbox):
action "inbox" mbox "%h/mail/INBOX"
# Catch-all action (maildir):
# action "inbox" maildir "%h/Mail/INBOX"
account "foo" imaps server "imap.example.com"
user "foo@example.com" pass "supersecret"
account "bar" imaps server "imap.gmail.com"
user "bar@gmail.com" pass "evenmoresecret"
# Match all mail and deliver using the 'inbox' action.
match all action "inbox"
上記の設定で、設定したアカウントからメールが INBOX フォルダに集配されます。他のタイプのメールサーバー (例: POP3) に接続する方法は fdm(1) の man ページを参照してください。
パスワードマネジメント
メールアカウントのパスワードは、設定ファイルにプレーンテキストで保存するか、シェルコマンドでパスワードマネージャーやキーリングから要求することができます。$(cmd ...) 方式
パスワードマネージャーの使用
以下は、passを使った例です。
account "foo" imaps server "imap.example.com" user "foo@example.com" pass $(pass foo-email-entry | head -1)
Gmail の OAuth2 認証
fdm は OAuth2 アクセストークンを使用することができ、gmail でも使用することができますが、OAuth2 認証情報の更新や認証の機能が欠けています。包括的な解決策としては、mailctl ユーティリティを使用することで、IMAP/SMTP クライアントに OAuth2 認証情報の更新と認証の機能を提供することができます。
設定例:
account "foo" imaps server "imap.gmail.com" user "foo@gmail.com" pass $(mailctl access foo@gmail.com) oauthbearer
アクセストークンの更新はユーザーから見えないようにバックグラウンドで自動的に行われます。 'mailctl は AUR からバイナリパッケージとして入手できます: mailctl-binAUR
cron からの実行
上記の例はインタラクティブに使用する分には問題ありませんが、cron ジョブから使用する場合は少し複雑です。 というのも、呼び出されるプログラムのいくつかは、特定の環境を期待することがあるからです。 ラッパー・スクリプトを使用し、必要な環境変数をエクスポートすることで、この問題を回避することができます。 ここでは、そのようなスクリプトのためのいくつかのトリックを紹介します。
...
# パス
export PASSWORD_STORE_DIR=~/.local/var/password-store
...
# gnome のキーリングを使用する場合
# secret-tool はこの2つの envar が必要です
# そこで、このスクリプトが cron ジョブで実行されるために、それらを偽造します。
export DISPLAY=${DISPLAY:-:0}
export DBUS_SESSION_BUS_ADDRESS=${DBUS_SESSION_BUS_ADDRESS:-unix:path=/run/user/$UID/bus}
...
テスト
設定が上手くいったら、fdm を手動で実行してメールを取得してみてください:
$ fdm -kv fetch
エラーがあった場合、サーバー上のメールには手を付けられません。出力を確認して設定通りに動作することをチェックしてください。お好きなメールリーダー (MUA) を開いて集配されたメールが読めることを確認しましょう。
高度な使用方法
fdm のユーザビリティを向上させる補助機能。
フィルタリングの追加
特定のアカウントからのメールを特定のメールボックスに保存したい場合、以下の行を fdm.conf ファイルに追加します。上記の設定ファイルなら、bar@gmail.com のメールを bar-mail フォルダに振り分けたい場合、既存の "action" 行の下に以下を追加してください:
action bar-deliver mbox "%h/mail/bar-mail"
必要に応じて mbox を maildir に変更したり、パスを確かめて下さい。
新しいアクションを有効にするために、既存の "match" 行の前に追加を追加:
match account bar action bar-deliver
これで bar@gmail.com 宛の全てのメールが bar-mail メールフォルダに行くようになります。
自動化
fdm はデーモンとして動作しないので、メールの時間指定は cron や systemd timers のようなジョブスケジューラに任されています。 このセクションでは、その両方の実装を紹介します。
cron による自動化
すべてのアカウントから 15 分ごとにメールを取得して並べ替え、一致するすべてのログをローカル ファイルに追加します。:
$ crontab -e
... */15 * * * * fdm fetch >> $HOME/[Mm]ail/fdm.log