Profruit banner

Умен звънец в openHAB

16 декември 2023

Телефонът е винаги с мен и сега, където и да се намирам получавам известие от openHAB, че някой е позвънил и чака пред вратата. А ако ме няма вкъщи става ясно часа и датата на последното позвъняване.

Tasmota Multipress

30 септември 2023

Идеята е Sonoff Touch T1 US 2 в салона, да управлява освен своето осветление и това в кухнята, а още вентилатора.

DIY 12V 1A WiFi Router UPS

22 април 2023

При поредно прекъсване на захранването вкъщи, батерията на нoтбука и двата UPS автоматично превключват на аварийно захранване и едновременно полита съобщение за конфуза

Zigbee2MQTT клониране

21 януари 2023

... как да клонираме съществуваща настройка на Zigbee2MQTT без да се налага последвало интервю на zigbee-устройствата.

LD2410 - бюджетен датчик присъствие в openHAB

11 февруари 2023

Цената на HLK-LD2410 зададе име на поредната тема в моя блог. С негова помощ се постига "народен" датчик присъствие в домашната автоматизация. . ...


Терзания

При влизане в Ubuntu Server чрез SSH след успешна авторизация ви посреща многоредово съобщение. То поднася всякаква допълнителна информация относно права, гаранции, версия ядро, дата и време на последен успешен вход, и т.н., но в края на предпоследния ред изписва You have new mail. Това винаги ме впечатляваше и веднага се надигаше усещане, че не влизам в персоналка с терминал, а в информационна система с команден център.
Има няколко начина да се избавите от тези писма, попадащи в /var(/spool)/mail/root:
  1. Създаване на празен файл .hushlogin в $HOME (~/.hushlogin)
  2. unset $MAILCHECK в файл .bashrc в $HOME (~/.bashrc)
  3. unset MAIL в файл /etc/profile
MAILCHECK е вградена променлива на shell/bash. Тя съдържа количество секунди, необходими за поредна проверка на нови писма в пощенската кутия на потребителя.

Повече за нея:
echo $SHELL
echo $MAILCHECK # 60s by default
man bash

и за да прочетете конкретно въведете /MAILCHECK.

Прочита на писмата в въпросната директория може да бъде по познат начин, чрез cat, more, tail, nano, но нещата ще станат по-интересни ако се постигат с команда за целта. Това предполага наличие на малък пощенски клиент с логична команда mail. По неясни причини подобна няма инсталирана в системата и ви посреща предложение от конзолата:

The program 'mail' can be found in the following packages:
* mailutils
* heirloom-mailx
* mutt
Try: sudo apt-get install


Работата с mail е изключително забавна и горещо препоръчана да се добави. Последните двa пакета предлагат прикрепяне на файл, но те не са обект на внимание, mailutils е главният герой.

Работата с mail от пакета mailutils се свежда до следния ред в терминала:

mail -s заглавие на писмото до1@адрес1 до2@адрес2 < съдържание на писмото

Флаг -s на команда mail указва изпращане на електронно писмо право от терминала, подобно на уеб-базирана поща или пък на пощенски клиент. Веднага след него напишете заглавие (ако е израз, го поставете в кавички), следва отстъп и въвеждане на електронен адрес. Веднага след него натиснете клавиш [Enter]. Ще се появи карбон полето (Cc:), въведете адрес или го пропуснете с клавиш [Enter]. I тук следва да напишете вашето писмо. Спокойно може да се пренасяте на нов ред с клавиш [Enter]. Изпращането става с ^D.

Малки пояснения

Пакет mailutils инсталира MUA (Mail user agent) и МТА (Mail Transfer agent). Първият се грижи за обработката на вашите писма и взаимодействието с вас, докато вторият поема от MUA писмото и го предава на пощенския сървър. МТА в mailutils се оказва postfix. В моя случай под Ubuntu 10.04.4 mail е версия GNU Mailutils 2.1, докато на другата ми машина под LinuxMint 14 се оказва версия 2.99.97. Различията доведоха писмата под Mint да се изпращат веднага, без всякакви допълнителни настройки, докато под Ubuntu удариха на камък.

Отказах се да се занимавам с настройката на postfix, защото за скромните ми цели еднозначно считам за фаворит Exim4. Него вече разгледахме в тема Ubuntu localhost send mail. Exim4 ще предава писмата на безплатния smpt-сървър от Google. Ясно, че трябва да притежавате Google акаунт.

Команда mail предлага хитри начини за изпращане на писмо. Например, вие може да напишете обширно писмо в GUI редактор. Да го съхраните в вашата домашна директория под произволно име, да речем pismo.txt, а в последствие да го насочите в потока на mail чрез <.

(/bin/)mail -s "Заглавие" До@кого < pismo.txt

или пък да насочите изходния поток от една команда в входния на mail, чрез |.

ls -la | mail -s "Заглавие" До@кого

Инсталацията на mail ще даде още възможност, да четете вашите писма, попадащи в /var(/spool)/mail/$USER. Лаконична команда:

mail

или по-конкретно

mail -u $USER


прочита става с въвеждане на r и съответно номера на писмото, а изтриването става с d.
d 1 - премахва първо писмо
d 1 2 3 - премахва първо второ и трето писмо
d 1-10 - задава диапазон за премахване
d * - трие всички

От думи на практика

На времето Ванката написа писмо с адрес "На село за дядо". Нещо такова да опитаме и ние, все пак наближава 14 февруари, моят трети рожден ден. Аз съм Водолей и съм се родил на 21.01. Задължително повтарям рождения си ден на 29.01 и го затвърдявам на 14.02. След тези дати за мен годината е изтекла ... та сантименталностите в ляво. Посветих се на команда Mail и написах bash-скрипт, който да направи деня ви по-пълен и изпълни с гордост, че сте убунтист. Скриптът нарекох email, съответно изпълним с права 0700. Разположих го до братята си в каталог Scripts на моята домашна директория.

directory


email
#!/bin/bash
# Profruit script to send simple email

# Форматиране на текст
RED="\033[0;31m"
ENDCOLOR="\033[0m"

# mail команда
MAIL=$(which mail)

# Заглавие на писмото
echo -e "${RED}\tЗаглавие на писмото${ENDCOLOR}"
read SUBJECT

# До кого?
echo -e "${RED}\tАдрес на получателя${ENDCOLOR}"
read ADDRESS

# Валидация на ел.адрес
EMAIL=`echo $ADDRESS | grep "^[a-zA-Z]\+\([._][a-zA-Z0-9._]\+\)*@\([a-z]\+\.\)\+[a-z]\{2,6\}$"`
if [ ${#EMAIL} -gt 0 ]; then 

# Съдържание и изпращане
# $MAIL -s $SUBJECT $EMAIL
# "$MAIL" -s "$SUBJECT" "$EMAIL"
${MAIL} -s ${SUBJECT} ${EMAIL}

 # Служебни съобщения
 ANSWER=`echo $?`
 if [ $ANSWER -eq 0 ]; then
  echo -e "${RED}\tПисмото изпратено успешно${ENDCOLOR}"

 elif [ $ANSWER -ne 0 ]; then
  echo -e "${RED}\tПроблем с изпращане на писмото${ENDCOLOR}"
 fi

else
 echo -e "${ADDRESS} не е валиден адрес.\nОпитай отново!"
 sleep 5 && exit
fi
Надявам се коментарите ви ориентират кое за какво е. Опит за форматиране на текст, валидация на еmail-адрес, изпращане на писмото и преглед на статуса.

Каталог Scripts e добавен в променлива $PATH. По-интелигентен начин, отколкото да правя псевдоним (alias) на email. По този начин стартирам email само с лаконичен повик на името в терминала.

И така, пишем писмо На село за дядо.

mail from terminal

Вижда се, че писмата пристигат успешно на двата адреса и кирилицата is not dead. И тук подводни камъни. Ако заглавието е израз на кирилица гърми. Не може да се парсне според "Format of RFC822 object is bad", иначе една дума на кирилица е ОК (за какъв чеп им е притрябвало на сиамските близнаци Кирилл и Мефодий да плагиатстват еврейските букви от понтите, га ако дращехме на шлоькавица нямаше да имаме такива дертове, ама нейсе, дядо знае езици).

mail to abv.bg

Писмо може да пращате от името на вашия потребител или от суперпотребителя. Знайте, че в хедърите се чете вашето IP (не сте анонимен). За X-Mailer се подписва mail (GNU Mailutils 2.1), а изпращаш се явява вашия акаунт в Google.




до нови срещи   ^.^
09.02.2013 profruit 

0 Response to "Команда MAIL"

Публикуване на коментар

Този блог е реинкарнация на първите ми опити за споделяне в нета. На времето започнах с къси разкази на преживяното. После се обезсмисли и превърнах блога си в системно радио. Пиша единствено неща, които карат душата ми да живее: openHAB, Ubuntu, Споделено и т.н. Това е моето системно радио, разбирате ли? Моята вълна и вие сте на нея сега.

Архив на блога