doveadmを試してみた【Dovecot配下のメールを検索】

とりあえず、doveadmを必要となる前の準備練習として使ってみた。

早速新着未読メールを下記コマンドで検索してみた。
```
doveadm search -u user new
```
・・・が、何も表示されない。そこで下記コマンドを試してみた。
```
doveadm search -u user unseen
```
未読メールはnewではなく、unseenで引っかける模様。

今度はキーワードと送信日付のAND条件で検索してみる。日付の記載フォーマットに癖があるので注意が必要。
```
doveadm search -u user body '一太郎' senton '8-Jan-2025'
```
検索にヒットすると下記のように、メールボックスのGUIDとUIDが表示される。
```
4221bf2d997467672e43030046fd3d48 252
4221bf2d997467672e43030046fd3d48 257
4221bf2d997467672e43030046fd3d48 260
```
このGUIDとUIDでメッセージを表示してみる。
```
doveadm fetch -u user "mailbox date.received text.utf8" mailbox-guid 4221bf2d997467672e43030046fd3d48 uid 260
```
するとメールヘッダを含めたメール全体が表示される。
```
mailbox: ショップ.ジャストシステム
date.received: 2025-01-08 18:20:20
text.utf8:
Return-Path: <news_rep@justmyshop.com>
X-Original-To: ***@******
Delivered-To: ***@******
Received: from b13001.repica.jp (b13001.repica.jp [182.236.82.58]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by **.******* (Postfix) with ESMTPS id 6AE70146445 for <***@*******>; Wed,  8 Jan 2025 18:20:19 +0900 (JST)
Received: from jmsmlmagagw11.justmyshop.com (HELO) (163.44.223.121)  by b130.repica.jp with ESMTP; Wed, 08 Jan 2025 18:10:46 +0900
Received: from jmsmlmagagw11.poseidon.idc.justsystem.co.jp (unknown [127.0.0.1]) by jmsmlmagagw11.justmyshop.com (Postfix) with SMTP id 210B360D3F52 for <***@******>; Wed,  8 Jan 2025 18:10:46 +0900 (JST)
DKIM-Filter: OpenDKIM Filter v2.11.0 jmsmlmagagw11.justmyshop.com 210B360D3F52
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=mag.justmyshop.com; s=selector; t=1736327446; bh=Mi0vh1DBtL7Ua/tENgKcxlqcB1ZH6+HfUj46mm/7eXE=; h=Date:From:Reply-To:To:Subject:List-Unsubscribe:From; b=qoeKzFlVCOdoVcSkDuPFI8L7eMYFB5eXQub8Pef/zyoZ2Gj8l/1h24qBeRymU53kO  AL1jeBCKDSRnm3qJwexymlrWqnv8PB20VEvd7XBeS0UNEOiaC9RZwfjnViI9TSIO0Q  mr8LGTB3Bl1iDPnQWl93kMqXLHQeSZp2sTteoLw8=
Received: (qmail 3841340 invoked from network); 8 Jan 2025 09:10:46 -0000
Received: from unknown (HELO jmsbackup11.poseidon.idc.justsystem.co.jp) (172.22.22.101)  by jmsmlmagagw11.poseidon.idc.justsystem.co.jp with SMTP; 8 Jan 2025 09:10:46 -0000
Date: Wed, 8 Jan 2025 18:10:46 +0900 (JST)
From: Just MyShop Information <info@mag.justmyshop.com>
Reply-To: info@mag.justmyshop.com
To: ***@******
Message-ID: <18016694.5550878.1736327446120.JavaMail.www@jmsbackup11.poseidon.idc.justsystem.co.jp>
Subject: 【お知らせ】ジャストマイショップにログインするとお客様に最適な『一太郎2025』をご案内いたします［Just MyShop インフォメーション］
MIME-Version: 1.0
Content-Type: text/plain; charset=ISO-2022-JP
Content-Transfer-Encoding: quoted-printable
X-SE-HID: b130.repica.jp.1736327446903667

※このメールは一太郎をお持ちのJust MyShop会員様へお送りしております。
------------------------------------
【お知らせ】ジャストマイショップにログインすると
　　　　　　お客様に最適な『一太郎2025』をご案内いたします
　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　　2025.1.8
　　　　　　https://www.justmyshop.com/products/ichitaro/?m=jmsi8b01
------------------------------------
（途中省略）
```
確かに2025年1月8日送信分で本文に「一太郎」を含むメールが表示されています。

また、日付だけではなく、日時で検索できないか試行錯誤してみたものの、RFCに行きつきIMAP4REV1のプロトコルでは日時はサポートされていないことが発覚した。残念・・・

ちなみに検索とメール表示を同時に行うスクリプトは以下の通り。検索にヒットしたメールすべてが表示されるので、画面が一気に流れるので注意が必要。適宜lessをかましてページングする必要があります。
```
doveadm search -u user body '一太郎' on "8-Jan-2025" | while read guid uid; do 
doveadm fetch -u user "mailbox text.utf8" mailbox-guid $guid uid $uid; 
done
```