Guide
IMAP CLI:任意のサーバーからメールを読む
IMAP CLI を使ってターミナルから Fastmail、Zoho、ProtonMail Bridge、Dovecot、その他の IMAP サーバーのメールを一覧表示、検索、閲覧。IMAP は Gmail、Outlook、Exchange 以外のすべてのメールプロバイダを支えるプロトコルです。
Written by Qasim Muhammad Staff SRE
Reviewed by Hazik
ターミナルから IMAP CLI を使うには?
IMAP アカウントを一度接続すれば、nylas email list、nylas email search、nylas email read が使えます。Fastmail、Zoho、ProtonMail Bridge、Dovecot、ISP メールボックスに、OAuth ベースのプロバイダと同じターミナルワークフローを提供します。
IMAP コマンドラインツールとして、CLI は IMAP 接続をコマンドラインから一度テストした後、mutt、fetchmail、imaplib の個別設定を維持する代わりに正規化されたメールコマンドを使い続けたい場合に便利です。
IMAP は大手ホスティングプロバイダ以外のメールの基盤です。
IMAP(RFC 3501、2003 年公開)は、Big Three(Google、Microsoft、Apple)以外のプロバイダのメールアクセスを支えるプロトコルです。Gmail と Outlook が個人向けメールを支配していますが、ビジネスや教育機関のメールの相当部分は依然として IMAP 専用サーバーで運用されています。
セルフホストのメール管理者、ISP アカウントユーザー、大学の学生、Fastmail や Posteo のようなプライバシー重視プロバイダのユーザーはすべて IMAP に依存しています。プロトコル自体は機能しますが、コマンドラインから IMAP クライアントを設定するのは大変です。
IMAP 設定の問題
IMAP サーバーごとにホスト名、ポート、TLS モード、認証方式が異なります。mutt、fetchmail、Python の imaplib で接続するには 4 つすべてを正確に知る必要があります。1 つでも間違えると、30 秒間接続タイムアウトを眺めた後に不可解なエラーが表示されます。
1 つのプロバイダ向けの典型的な .muttrc 設定は以下のようになります:
# Fastmail 用 .muttrc — 1 アカウントで 8 行の設定
set imap_user = "you@fastmail.com"
set imap_pass = "app-specific-password-here"
set folder = "imaps://imap.fastmail.com:993/"
set spoolfile = "+INBOX"
set record = "+Sent"
set postponed = "+Drafts"
set ssl_starttls = yes
set ssl_force_tls = yesこれを持っている IMAP アカウントの数だけ掛けてください。さらに自己署名証明書のセルフホストサーバー、別のポートを使う ISP アカウント、ポート 143 の STARTTLS のみをサポートする大学アカウントを加えます。異なる TLS 設定の 3 つの個別設定ブロックが必要で、パスワードを変更すると接続がサイレントに切れます。
1. Nylas CLI のインストール
Nylas CLI はランタイム依存関係のない単一バイナリとしてインストールされます。macOS と Linux では Homebrew が最速です。30 秒以内にインストールが完了し、SHA-256 チェックサムの自動検証が含まれます。バイナリサイズは約 25 MB で、x86_64 と ARM64 アーキテクチャに対応しています。
brew install nylas/nylas-cli/nylas他のプラットフォームについては、入門ガイドでシェルスクリプト、PowerShell、Go によるインストール方法を解説しています。
2. IMAP アカウントの接続
IMAP アカウントを Nylas CLI に接続するには、Nylas ダッシュボードでの一回限りのセットアップが必要です。ダッシュボードは Fastmail、Zoho、Posteo を含む 50 以上の既知 IMAP プロバイダのサーバー設定を自動検出します。セルフホストサーバーの場合は、ホスト名とポートを手動で入力します。セットアップ全体は約 2 分です。
dashboard-v3.nylas.comにアクセスし、アプリケーションを作成して IMAP アカウントを接続します。その後、API キーで CLI を設定します:
nylas auth config
# プロンプトで API キーを貼り付け
# 接続の確認
nylas auth whoami
# => Authenticated as you@fastmail.com (IMAP)3. メールの一覧表示
nylas email list コマンドは、Gmail、Outlook、Exchange アカウントと同じ構文で、接続された任意の IMAP サーバーからメッセージを取得します。デフォルトでは日付順にソートされた最新 10 件のメッセージを返します。既読ステータスでのフィルタリングやフラグによる結果数の調整が可能です。
IMAP の RFC 3501 FETCH コマンドは通常、メッセージシーケンス番号とデータアイテムの指定が必要です。CLI はこれを全プロバイダで動作する単一コマンドに抽象化します。
# 最近のメッセージを一覧表示
nylas email list
# 未読メッセージのみ表示
nylas email list --unread
# 結果を 25 件に制限
nylas email list --limit 25セルフホストメールサーバー(Dovecot、Postfix、Zimbra)
セルフホストメールサーバーは、商用プロバイダと同じ IMAP 接続フローで Nylas CLI と連携します。Dovecot プロジェクト自身の使用データによると、Dovecot だけで世界の IMAP サーバーの推定 73% を支えています。IMAP に Dovecot、SMTP に Postfix、またはMail-in-a-Box や Zimbra のようなオールインワンスタックを運用している場合でも、ダッシュボードのセットアップで必要なのはホスト名とポートだけです。
Nylas プラットフォームはセルフホストサーバーに対して TLS ネゴシエーション、コネクションプーリング、IMAP IDLE キープアライブを処理します。一般的なセルフホスト構成と Nylas ダッシュボードに入力する値:
| サーバースタック | IMAP ホスト名 | ポート | TLS |
|---|---|---|---|
| Dovecot(標準) | mail.yourdomain.com | 993 | Implicit TLS |
| Mail-in-a-Box | box.yourdomain.com | 993 | Implicit TLS |
| Zimbra | mail.yourdomain.com | 993 | Implicit TLS |
| Courier IMAP | mail.yourdomain.com | 993 or 143 | Implicit TLS or STARTTLS |
| Cyrus IMAP | mail.yourdomain.com | 993 | Implicit TLS |
| hMailServer (Windows) | mail.yourdomain.com | 993 | Implicit TLS |
セルフホストサーバーを Nylas ダッシュボード経由で接続した後の CLI コマンドは、他のプロバイダとまったく同じです。CLI の使用に IMAP 固有の部分はありません。サーバーが Dovecot、Zimbra、Cyrus のいずれであっても、同じ nylas email list と nylas email search コマンドが動作します。
# セルフホスト Dovecot サーバー — Gmail や Outlook と同じコマンド
nylas email list --limit 10
nylas email search "from:client@example.com"
nylas email list --folder "Sent" --limit 5ISP・通信事業者のメールアカウント
Comcast、AT&T、Deutsche Telekom などの ISP メールアカウントは、標準の IMAP 資格情報で Nylas CLI に接続できます。Consumer Reports の 2023 年のデータによると、推定 3,000〜4,000 万人のアメリカ人が ISP 提供のメールアドレスを使用しています。これらのアカウントは IMAP アクセスのみ提供しています。OAuth2 も REST API もなく、ユーザー名とパスワードだけです。
一般的な ISP ドメインには、Comcast/Xfinity(@comcast.net)、AT&T(@att.net、@sbcglobal.net)、Deutsche Telekom(@t-online.de)、BT(@btinternet.com)があります。ISP メールアカウントは、ISP がサーバー設定を頻繁に変更するため、従来の IMAP クライアントでは非常に不安定です。例えば AT&T は 2017 年に imap.mail.att.net から Yahoo のインフラに移行し、手動設定されたすべてのクライアントが壊れました。
以下は主要 ISP プロバイダの IMAP サーバーホスト名です。自動検出でプロバイダが見つからない場合、Nylas ダッシュボードのセットアップ時にこれらの値を入力してください。
# 一般的な ISP IMAP サーバー(Nylas ダッシュボードセットアップ時の参照用)
# Comcast/Xfinity: imap.comcast.net:993
# AT&T: imap.mail.att.net:993
# Verizon: incoming.verizon.net:993
# Deutsche Telekom: secureimap.t-online.de:993
# BT Internet: imap4.btconnect.com:993
# ダッシュボードで接続後は同じコマンド:
nylas email list --limit 10大学・教育機関のメール
大学や教育機関のメールシステムは、標準の IMAP grant フローで Nylas CLI に接続できる独立した IMAP サーバーを運用していることが多いです。2023 年の EDUCAUSE 調査によると、ヨーロッパの高等教育機関の約 40% が Google Workspace や Microsoft 365 に外注せず、自前のメールインフラを運用しています。MIT、Caltech、ほとんどのヨーロッパの研究大学がこのカテゴリに該当します。
これらのアカウントには、商用 IMAP プロバイダとは異なる特有の要件があることが多いです:
- 学外からの IMAP アクセスに VPN が必要な場合がある
- ポート 993 の Implicit TLS ではなく、ポート 143 の STARTTLS を使用
- プレーンパスワードではなく Kerberos または LDAP 認証
- アグレッシブな接続タイムアウト(IMAP 標準の 30 分に対して 5 分であることが多い)
ダッシュボードセットアップ時にサーバー情報を提供すれば、CLI が TLS ネゴシエーション、IDLE キープアライブ、タイムアウト後の再接続といった接続レベルの詳細を処理します。
TLS、ポート、STARTTLS の混乱
IMAP は 2 つのポート番号を使用します。Implicit TLS 用の 993 と STARTTLS またはプレーンテキスト用の 143 です。間違ったポートを選ぶとサイレントに接続が失敗します。2018 年公開の RFC 8314 は、すべての新規デプロイメントのデフォルトとしてポート 993 の Implicit TLS を推奨しています。にもかかわらず、IETF の 2022 年の調査では、アクティブな IMAP サーバーの 35% 以上がポート 143 で STARTTLS 接続を受け付けています。
| ポート | 方式 | 動作 | ステータス |
|---|---|---|---|
| 993 | Implicit TLS | 最初に TLS ハンドシェイク、その後 IMAP | 推奨(RFC 8314) |
| 143 | STARTTLS | IMAP がプレーンテキストで接続し、TLS にアップグレード | レガシー(依然一般的) |
| 143 | なし | プレーンテキストの IMAP(暗号化なし) | 非推奨 — 使用しないでください |
STARTTLS 方式には既知の脆弱性があります。中間者攻撃者がクライアントに届く前に STARTTLS コマンドを除去し、プレーンテキスト接続を強制できます。これが RFC 8314 が Implicit TLS を推奨する理由です。Nylas プラットフォームは IMAP 接続に常に TLS を使用します。
IMAP vs POP3:IMAP が重要な理由
IMAP はメッセージをサーバーに保持しデバイス間で状態を同期しますが、POP3 はメッセージをダウンロードしオプションでサーバーから削除します。RFC 3501(IMAP)は RFC 1939(POP3、1996 年公開)の後継として 2003 年に公開されました。一部の古い ISP アカウントはまだ両方のプロトコルを提供していますが、サーバーサイド検索、フォルダナビゲーション、メッセージの部分取得をサポートするのは IMAP だけです。
| 機能 | IMAP (RFC 3501) | POP3 (RFC 1939) |
|---|---|---|
| メッセージの保存先 | サーバー上(同期) | クライアントにダウンロード(デフォルトでサーバーから削除) |
| 複数デバイス | 対応 — 全クライアントが同じ状態を参照 | 非対応 — 各クライアントが個別にダウンロード |
| フォルダ対応 | 対応(INBOX、Sent、カスタムフォルダ) | 非対応(受信箱のみ) |
| 検索 | サーバーサイド SEARCH コマンド | 非対応 — 先にダウンロードが必要 |
| 部分取得 | 対応(ヘッダーのみ取得、ボディパーツ取得) | 非対応(メッセージ全体をダウンロード) |
| 帯域幅 | 低い(変更分のみ同期) | 高い(すべて再ダウンロード) |
| オフラインアクセス | クライアントがローカルにキャッシュ | 完全なローカルコピー |
プロバイダが両方を提供している場合は、常に IMAP を選択してください。Nylas CLI は POP3 をサポートしていません。IMAP が CLI 操作に厳密に優れたインターフェースを提供するためです。サーバーサイド検索、フォルダナビゲーション、メッセージの部分取得はすべて IMAP が必要です。
複数 IMAP アカウントの集約
Nylas CLI は --grant フラグを使って、複数の IMAP アカウントを単一のコマンドラインインターフェースに集約できます。接続された各 IMAP アカウント(Fastmail、セルフホストの Dovecot、ISP アドレスのいずれも)は個別の grant となり、1 つのフラグで切り替えられます。mutt などの従来の IMAP クライアントはアカウントごとに個別の設定ブロックが必要で、3〜4 アカウントに対して 3〜4 つの資格情報ファイルを管理することになります。
以下の例では、3 つの個別 IMAP アカウントに問い合わせ、1 つのシェルループですべての未読メッセージを数えます。
# --grant フラグでアカウントを切り替え
nylas email list --grant "you@fastmail.com" --limit 5
nylas email list --grant "you@selfhosted.org" --limit 5
nylas email list --grant "you@comcast.net" --limit 5
# 特定のアカウントで検索
nylas email search "invoice" --grant "you@fastmail.com"
# 1 つのスクリプトで全アカウントの未読を集計
for grant in "you@fastmail.com" "you@selfhosted.org" "you@comcast.net"; do
count=$(nylas email list --unread --json --grant "$grant" | jq length)
echo "$grant: $count unread"
doneIMAP フォルダ名は標準化されていない
RFC 3501 が定義する必須フォルダは INBOX のみであるため、IMAP フォルダ名はサーバーによって異なります。Sent、Drafts、Trash、Junk などの他のフォルダ名は標準ではなく慣習です。Courier IMAP は INBOX.Sent のようにドット区切りの名前を使い、Dovecot はプレーンな Sent、Zimbra は異なる内部名前空間で Sent を使います。RFC 6154(2011 年)はフォルダに役割をタグ付けする SPECIAL-USE 拡張を導入しましたが、採用は不均一で、IMAP サーバーの約 60% がサポートしています。
nylas folder list コマンドは、接続された IMAP サーバー上のすべてのフォルダを表示します。Nylas CLI は一般的なフォルダ名を正規化するため、サーバーの内部命名規則に関係なく Sent を使用できます。
# IMAP サーバー上のすべてのフォルダを一覧表示
nylas folder list
# プロバイダごとのフォルダ名の違い:
# Fastmail: "Sent", "Trash", "Junk Mail", "Archive"
# Dovecot: "Sent" or "INBOX.Sent" (namespace prefix varies)
# Zimbra: "Sent", "Trash", "Junk"
# Zoho: "Sent", "Trash", "Spam"
# Courier: "INBOX.Sent", "INBOX.Trash" (dot-separated hierarchy)
# Nylas CLI は一般的なフォルダ名を正規化
nylas email list --folder "Sent"
nylas email list --folder "Drafts"
nylas email list --folder "Trash"INBOX. プレフィックスは 2000 年代初期の Courier IMAP の慣習です。nylas folder list の出力でこれが見える場合、サーバーは旧式の名前空間を使用しています。CLI は両方のフォーマットに対応しています。
IMAP 自動化のための JSON 出力
Nylas CLI は --json フラグを使って、生の IMAP プロトコルレスポンスを構造化 JSON に変換します。ネイティブ IMAP は RFC 3501 で定義された括弧付きの S 式風フォーマットを使用しており、カスタムパーサーなしでは jq にパイプできません。--json フラグは各メッセージを subject、from、 date、body などのフィールドを持つ JSON オブジェクトとして出力し、スクリプトや AI エージェントですぐに利用できます。
JSON 出力の価値を示す 3 つの一般的な自動化パターンとして、日次受信トレイダイジェスト、完全 JSON エクスポート、送信者頻度分析があります。いずれも CLI の JSON 出力を jq で処理します。
# セルフホストサーバーからの日次受信トレイダイジェスト
nylas email list --unread --json --limit 50 | \
jq -r '.[] | "\(.date | split("T")[0]) | \(.from[0].name // .from[0].email) | \(.subject)"' | \
column -t -s '|'
# 最新 100 件のメッセージを分析用に JSON ファイルとしてエクスポート
nylas email list --limit 100 --json > inbox-export.json
# 最も頻繁に送信するアドレスを特定
nylas email list --limit 200 --json | \
jq -r '[.[] | .from[0].email] | group_by(.) |
map({sender: .[0], count: length}) |
sort_by(-.count) | .[:10] |
.[] | "\(.count) \(.sender)"'IMAP プロバイダリファレンス
このリファレンスでは、9 つの主要 IMAP プロバイダの IMAP サーバーホスト名、ポート、認証方式を掲載しています。Nylas ダッシュボードはこれらのほとんどのプロバイダの設定を自動検出しますが、自動検出が失敗した場合は手動で入力できます。ProtonMail Bridge を除くすべてのプロバイダがポート 993 の Implicit TLS を使用しています。ProtonMail Bridge はローカルのポート 1143 で動作します。
| プロバイダ | IMAP サーバー | ポート | 認証方式 |
|---|---|---|---|
| Fastmail | imap.fastmail.com | 993 | アプリパスワードまたは OAuth2 |
| Zoho Mail | imap.zoho.com | 993 | アプリ固有パスワード |
| ProtonMail Bridge | 127.0.0.1 | 1143 | Bridge 生成パスワード |
| Posteo | posteo.de | 993 | アカウントパスワード |
| GMX | imap.gmx.com | 993 | アカウントパスワード |
| mail.com | imap.mail.com | 993 | アカウントパスワード |
| Comcast/Xfinity | imap.comcast.net | 993 | アカウントパスワード |
| AT&T | imap.mail.att.net | 993 | アカウントパスワード |
| Dovecot(セルフホスト) | サーバーのホスト名 | 993 | サーバーの認証設定 |
次のステップ
IMAP メールの一覧表示後、Nylas CLI は接続されたすべてのプロバイダにわたってメールの送信、検索、カレンダーと連絡先の管理をサポートします。以下のガイドでは IMAP およびその他のメールプロバイダ向けの関連ワークフローを解説しています。
- ターミナルからメール送信 — 任意の IMAP アカウントからメールの作成と送信
- Gmail メールを一覧表示 — Gmail は独自 API を使用しますが、CLI コマンドは同じ
- Outlook メールを一覧表示 — Microsoft 365 向けの同じワークフロー
- Yahoo Mail CLI:ターミナルからメールを読む — Yahoo は OAuth2 と IMAP の両方をサポート
- iCloud Mail CLI:ターミナルからメールを読む — Apple の IMAP(追加の認証手順あり)
- Gmailify と POP3 の代替手段 — Gmail の POP 変更後の IMAP、転送、CLI アクセスの比較
- iCloud Mail API の代替手段 — Apple IMAP 設定と共有 CLI ワークフローの選択
- Exchange メールを一覧表示 — Exchange Online とオンプレミス対応
- MCP で AI エージェントにメールアクセスを付与
- 完全なコマンドリファレンス
- RFC 9051 -- IMAP4rev2 — SEARCH、FETCH、ケイパビリティネゴシエーションを含む現行 IMAP 仕様
- RFC 8314 -- Cleartext Considered Obsolete — サブミッションおよび IMAPS / POP3S での Implicit TLS を義務化