telnet でメールチェック

2016年2月14日

telnet でメールチェックをやってみたかったので、ちょっと書いてみた。

#!/bin/sh
#
# 届いているメールの件数確認
#

POP_SV=受信メールサーバー
POP_PORT=受信ポート
POP_USER=アカウント
POP_PASS=パスワード

# 件数を連絡する先
SMTP_SV=送信メールサーバー
SMTP_PORT=ポート番号
SMTP_FROM=送信者のメールアドレス
SMTP_TO=宛先のメールアドレス

C_TN=/usr/bin/telnet

# process
#
CNT=`(
    sleep 1;
    echo "USER $POP_USER";
    sleep 1;
    echo "PASS $POP_PASS";
    sleep 1;
    echo "STAT";
    sleep 1;
    echo "QUIT";
) | $C_TN $POP_SV $POP_PORT | grep -E "+OK [0-9]+ [0-9]+" | awk '{print $2}'`

if [ $CNT -ne 0 ]; then
    # 届いているメールの件数を通知
    #
    (
        sleep 1;
        echo "HELO example.com";
        sleep 1;
        echo "MAIL FROM: $SMTP_FROM";
        sleep 1;
        echo "RCPT TO: $SMTP_TO";
        sleep 1;
        echo "DATA";
        sleep 1;
        echo "From: $SMTP_FROM";
        sleep 1;
        echo "Subject: receive mail num... $CNT ";
        sleep 1;
        echo ".";
        sleep 1;
        echo "QUIT";
    ) | $C_TN $SMTP_SV $SMTP_PORT
fi