LoginSignup
3
3

More than 5 years have passed since last update.

大量のメールを telnet + POP3 で一括削除

Last updated at Posted at 2014-11-07

POP3を提供しているサーバーにtelnetする。
ポートは110番。

$ telnet example.com 110
Trying XXX.XXX.XXX.XXX...
Connected to mail.example.com.
Escape character is '^]'.
+OK

なお、MacOS では High Sierra 以降 telnet コマンドが同梱されなくなったが、curl telnet://example.com:110 で代用できる。

USERコマンド

USER xxx@example.com
+OK

PASSコマンド

PASS XXXXXXX
+OK Logged in.

以上でログイン完了。

STATコマンド

STAT
+OK 702611 4556156834

STATコマンドでサーバーに溜まっているメールの件数と容量を確認(上の例では70万数千件/4GB以上溜まっている)。

DELEコマンド

DELE 1
DELE 2
DELE 3
DELE 4
DELE 5
...
+OK Marked to be deleted.
+OK Marked to be deleted.
+OK Marked to be deleted.
+OK Marked to be deleted.
+OK Marked to be deleted.
...

削除したいメールの件数分、DELEコマンドを打つ(引数はメッセージ番号で、常に1から始まる)。
70万件削除するなら、DELE 1DELE 700000まで入力する。
ただ、あまりに件数が多いと終わらないうちにタイムアウトして強制ログアウトされてしまう場合があるので、10万件ずつなどにしておくのがよいのではないか。

DELEコマンド10万回分をコピペできるように gist にした(注意:最終行にQUITコマンドも入れている)。

QUITコマンド

QUIT
+OK Logging out, messages deleted.
Connection closed by foreign host.

実はDELEコマンドだけでは実際の削除は完了しておらず、削除したいメッセージにマーキングされるだけ。
QUITしたときにはじめて実際の削除がなされる(QUITする前ならRSETコマンドを打てば取り消せる)。
なので、70万件を10万件ずつ削除するなら、7回、ログイン/ログアウトを繰り返してDELE 1DELE 100000する必要がある。

以上です。

その他のコマンド

RETR [メッセージ番号]
メッセージの内容を表示。

RSET
削除取り消し。

POP3コマンドの一覧

3
3
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
3
3