Сервер Ubuntu 15.10 - нужен ли мне почтовый клиент на моем сервере, чтобы получать, читать и анализировать электронные письма?

Я хочу написать сценарий для моего сервера для чтения и анализа электронных писем по адресу myemailaccount@walnutel.net, например, для настройки белого или черного списка брандмауэра iptables. По мере расширения домашней автоматизации у меня будет больше возможностей использовать эту возможность.

Мне даже нужен почтовый клиент? Интересно, может ли просто наличие MTA на моем сервере поместить входящую электронную почту где-нибудь в файловой системе, где скрипт сможет затем прочитать и проанализировать ее? У меня установлен постфикс, который дает мне возможность отправлять электронную почту (и, мне кажется, дает мне MTA).

Учетная запись электронной почты, которую система будет использовать для этой учетной записи, предоставлена ​​местным интернет-провайдером (Walnut Communications). В настоящее время я ни для чего не использую эту учетную запись электронной почты и не использую свои серверы для чтения электронной почты для чего-либо еще. У меня есть побочный вопрос: « Почему я даже могу отправлять электронную почту без проверки подлинности через учетную запись электронной почты Walnutel.net, чтобы предоставить ей учетные данные или достоверность, которые, как я думал, потребует инфраструктура электронной почты Интернета? '

Если бы я мог просто понять эти две вещи, я мог бы добиться гораздо большего прогресса. Обратите внимание, что сервер является автономным, CLI и без присмотра, поэтому я не могу просматривать почтовый ящик на нем или через него.

Редактировать 25.12.15: Я узнал, что методология электронной почты, которую я ищу, называется «bash сокеты». Для меня пока неясно, в моем исследовании я буду непременно нуждаться в аутентификации с использованием учетных данных моей локальной учетной записи электронной почты, чтобы надежно отправлять электронную почту на мою нелокальную учетную запись Gmail, и будет ли мне необходимо использовать SSL (TLS, и т.д). Если мне потребуется использовать SSL / TLS для связи с серверами электронной почты, я боюсь, что мне ОЧЕНЬ трудно будет найти примеры сценариев bash для этого.

0
задан 26 December 2015 в 06:41

2 ответа

Я преуспел в том, чтобы выбрать и проанализировать электронных писем со сценариями сокета удара без любого почтового клиента вообще. Это было сделано легким на основании моего ISP (Связь Грецкого ореха) не требование, чтобы SSL загрузил электронные письма с их почтового сервера. Если бы я должен был сделать этот в Сети связи Cox, кто устно заявил, что они требуют, чтобы SSL сделал то же, это было бы более трудно, потому что необходимое openssl s_client -connect pop.cox.net:995 -CApath /etc/ssl/certs команда, кажется, является интерактивным только.

Вот сценарий удара для того, чтобы войти в локальный обеспеченный ISP почтовый ящик, не требующий SSL. ЗНАЙТЕ, что ПАРОЛЬ ЯВЛЯЕТСЯ ПРОСТЫМ ТЕКСТОМ В ЭТОМ СЦЕНАРИИ В КАЧЕСТВЕ ПРИМЕРА, таким образом, можно хотеть добавить меру по сокрытию пароля к этим командам.

#!/bin/bash
# interactive use enabled by [ ! -z $PS1 ] && echo... 
exec 5<>/dev/tcp/pop3.walnutel.net/110
read -t 2 -u 5 HELO;[ ! -z $PS1 ] && echo "$HELO"
echo -e "user email_account_name_here\r" >&5 #prepend account name with "user "
read -t 2 -u 5 sendyourpassword;[ ! -z $PS1 ] && echo $sendyourpassword
echo -e "pass password_here\r" >&5 #prepend password with "pass "
read -t 2 -u 5  maildroplockedandready;[ ! -z $PS1 ] && echo -e $maildroplockedandready
echo -e "list\r" >&5
echo "" > ~/mailcontent;numofemails=-1;echo "" > ~/email_fetch_parse.log
while read  -t 2 -u 5 emailtitle; do
    [ ! -z $PS1 ] && echo "$emailtitle"
    [ $(( ${#emailtitle} )) -lt 3 ] && break
    if [ $(( ${#emailtitle} )) -lt 20 ]; then
         #add to array of emailtitlnums
         numofemails=$(( $numofemails + 1 ))
         emailtitlenums[ $((numofemails)) ]=${emailtitle% *}
    fi
done
if [ $((numofemails)) -gt -1 ]; then
    for i in `seq 0 $((numofemails))`;do
         echo -e "RETR ${emailtitlenums[i]}\r" >&5
          boundary=""
          while read  -t 2 -u 5 mailcontentline;do
             [ ! -z $PS1 ] && echo "$mailcontentline"
             mailcontentline="${mailcontentline:: -1} " #strip the linefeed and put space there instead
              if [ -z "$boundary" ];then [ $(echo "$mailcontentline"|grep -e "^Content-Type: "|grep -c "; boundary=") -gt 0 ] && boundary="$(echo "$mailcontentline"|grep -e "^Content-Type: " -e "; boundary="|/usr/bin/awk -F= '{print $2}')"
              else
                  echo "$(grep -e "search string 1" -e "search string 2,etc"  <(echo "$mailcontentline"))" >> ~/mailcontent #save lines of interest
                  [ $(bc <<<"${#mailcontentline} - ${#boundary}") -eq 4 ] && [ "${mailcontentline:2: -3}" == "${boundary:: -1}" ] && (for i in `seq 1 4`; do read -t 2 -u 5 mailcontentline;done) && break #
              fi
          done
    done
    for i in `seq 0 $((numofemails))`;do # to delete emails immediately
         echo -e "dele ${emailtitlenums[i]}\r" >&5
         while read -t 2 -u 5 deleteresponse;do [ ! -z $PS1 ] && echo "$deleteresponse";[ $(( ${#deleteresponse} )) -lt 1 ] && break;done
    done

# parse ~/mailcontent here if you want. It now contains lines of interest from all emails read

else
       [ ! -z $PS1 ] && echo "Inbox is empty" # >> ~/email_fetch_parse.log
fi
echo -e "QUIT\r" >&5
exec 5>&-

По второму вопросу [я] спросил, я приехал, чтобы узнать, что мой сервис отправки текстовых сообщений оператора сотовой связи прекратил принимать прямые электронные письма с поздно от моего [неаутентификация] домашняя система. Это означает, что моя система больше не может отправлять мне тексты домашних событий безопасности, пока я не получаю сценарии, завершенные для аутентификации к одному из моих почтовых ящиков аутентификации, который является все еще способен отправить мне тексты. Так, со сценариями оболочки я избавил от необходимости почтовый клиент выбирать электронную почту, и после того как я получаю сценарии, работающие на исходящую почту, моей системе безопасности больше не будет нужно никакой сторонние почтовые инструменты, ли mailutils, procmail, sendmail, или и т.д. Преимущество для меня состоит в том, что у меня не будет настроек конфигурации неизвестными мне и трудными/неудобными определить их соответствующие значения, необходимые в моем приложении.

0
ответ дан 26 December 2015 в 16:41
  • 1
    @user535733: у Меня есть другое устройство, работающее с Ubuntu 18.04, но не перечисленный на этом списке. Где я могу уведомить сообщество для добавления такого устройства к этому списку? – pt12lol 5 December 2018 в 22:46

мне даже нужен почтовый клиент?

Да, получая электронную почту от удаленного почтового сервера по определению задание почтового клиента. Это не должна быть законченная настольная программа как Thunderbird однако, fetchmail должен сделать задание для Вас.

, Почему я даже в состоянии для отправки электронного письма без него аутентифицируемый через почтовый ящик Walnutel.net, чтобы дать ему учетные данные или доверие, что я думал, инфраструктура пользования электронной почтой Интернета потребует?

По той же причине Вы в состоянии записать любому адресу вверху слева угол конверта прежде, чем поместить его в поле, не доказывая, что Вы действительно живете там: сертификация идентификационных данных отправителя не является целью системы.

0
ответ дан 26 December 2015 в 16:41
  • 1
    для добавления к этому если Вы делаете покупки на amazon.com или newegg.com, во многих описаниях продукта будет сказано, поддерживают ли они Linux. Оба из тех веб-сайтов имеют очень хорошие политики для возвратов поэтому, если это, окажется, не будет работать, то они позволят Вам возвращать его как дефектный, если это не будет работать в Linux, если в описании будет сказано, что это будет. Я купил несколько вещей для своего поля Linux на обоих сайтах и никогда не имел проблемы, заставляя его работать, если оно говорит it' s совместимый Linux. – TrailRider 13 March 2017 в 04:39

Другие вопросы по тегам:

Похожие вопросы: