Wiki

Clone wiki

rt-n56u / RU / Отправка e-mail с роутера

Отправка e-mail с роутера



Общая информация

В составе прошивки есть аплет sendmail, с помощью которого можно отправлять сообщения через SMTP-сервер. В общем виде это выглядит так:

echo "Моё сообщение" | sendmail -S"smtp.yourisp.com" -f"router@domain.com" you@domain.com

где smtp.yourisp.com — это SMTP-сервер провайдера, you@domain.com — адресат, router@domain.com — обратный адрес.

Совет: если провайдер не предоставляет SMTP, то можно воспользоваться сервисом Jango SMTP, позволяющего отправлять бесплатно до 200 сообщений в месяц.

Общедоступные почтовые службы вроде mail.ru, yandex.ru, gmail.com требуют защищённого соединения со своими SMTP-серверами, поэтому для отправки почты через них придётся использовать openssl. Два примера ниже показывают как это сделать.

Отправка сообщений на свой аккаунт yandex.ru

Поместите в файл /etc/storage/mail.sh следующее содержимое:

#!/bin/sh

LOGIN='vasya'
PASSWORD='P@ssw0rd'

if [ -z "$1" ]; then
    echo 'Say something.'
    exit 1
fi

MSG=/tmp/e-mail.txt

echo "From: Home router <$LOGIN@yandex.ru>" > $MSG
echo -e 'Subject: Message from router\n' >> $MSG
echo -e $1 >> $MSG
echo -e '\n---- \nYour friendly router' >> $MSG

sendmail $LOGIN@yandex.ru -H 'exec openssl s_client -quiet -tls1_2 -connect smtp.yandex.ru:465' < $MSG -au$LOGIN -ap$PASSWORD -f $LOGIN@yandex.ru > /dev/null 2>&1

if [ $? -eq 0 ]; then
    echo 'Sent successfully.'
else
    echo 'Error while sending e-mail.'
    exit 1
fi
rm $MSG

Отредактируйте поля LOGIN, PASSWORD и сделайте скрипт исполняемым:

chmod +x /etc/storage/mail.sh

Теперь можно пользоваться скриптом, передавая в качестве параметра текст e-mail сообщения:

/etc/storage/mail.sh "У попа была собака\nОн её любил."

Отправка сообщений на произвольный адрес через gmail.com

Поместите в файл /etc/storage/mail.sh следующее содержимое:

#!/bin/sh

FROM="your-gmail-address"
AUTH="your-gmail-username"
PASS="your-gmail-password"
FROMNAME="Your Router"
TO="your-email-address"

if [ -z "$1" ]; then
    echo 'Say something.'
    exit 1
fi

MSG=/tmp/e-mail.txt

echo "From: $FROMNAME <$FROM>" > $MSG
echo -e 'Subject: Message from router\n' >> $MSG
echo -e $1 >> $MSG
echo -e '\n---- \nYour friendly router' >> $MSG

cat $MSG | sendmail -H 'exec openssl s_client -quiet -tls1_2 -connect smtp.gmail.com:465' \
    -f"$FROM" -au"$AUTH" -ap"$PASS" $TO > /dev/null 2>&1

if [ $? -eq 0 ]; then
    echo 'Sent successfully.'
else
    echo 'Error while sending e-mail.'
    exit 1
fi
rm $MSG

Отредактируйте поля FROM, AUTH, PASS, FROMNAME, TO и сделайте скрипт исполняемым:

chmod +x /etc/storage/mail.sh

Теперь можно пользоваться скриптом для различной автоматизации, например:

/etc/storage/mail.sh "Новый IP-адрес роутера $(nvram get wan0_ipaddr)"

Совет: не забудьте включить доступ для непроверенных приложений в настройках безопасности Google.

Updated