User Tools

Site Tools


отправь_мне_в_почту

This is an old revision of the document!


Отправь мне в почту файл с сервера

Всем привет!

Есть множество способов скопировать файл, или его фрагмент, с линукс сервера: “копипаста”, scp/winscp, “комбайны” типа MobaXterm, php -S …, python -m http.server … . Для меня, неожиданно, оказался удобным вариант отправки такого файла себе на почту, в виде вложения, особенно, для дальнейшей пересылки коллегам (архивы журналов, примеры конфигураций …) Для технической реализации потребуется корпоративный почтовый сервер, упомянутый здесь https://habr.com/ru/posts/961564/ и bash (даже, точнее, sh :). Да, никакого специального ПО, предназначенного для работы с электронной почтой, ставить на каждый линукс сервер не придется.

За основу были взяты примеры отсюда: https://serverfault.com/questions/38919/send-an-email-with-an-attached-file-using-telnet-or-netcat

Конечный результат выглядит так: <code> $ nano ~/mail.sh

#!/bin/sh

[ -f “$1” ] || { echo Example: ~/mail.sh attach_file_name; exit 1; }

EMAIL=“youremail@yourcorp.ru” MAILSERVER=“mailhub.yourcorp.ru” FILENAME=$1

{

  sleep 2
  echo "EHLO $MAILSERVER"; sleep 1
  echo "MAIL FROM: <$EMAIL>"; sleep 1
  echo "RCPT TO: <$EMAIL>"; sleep 1
  echo "DATA"; sleep 1
  echo "To: $EMAIL"
  echo "Subject: $FILENAME"
  echo "MIME-Version: 1.0 (mime-construct 1.9)"
  echo "Content-Type: $(/usr/bin/file -bi "$FILENAME"); name=\"$FILENAME\""
  echo "Content-Transfer-Encoding: base64"
  echo
  openssl base64 < "$FILENAME"
  echo '.'
  echo "QUIT"
  echo

} | nc $MAILSERVER 25

$ chmod +x ~/mail.sh

$ ~/mail.sh /etc/os-release <code>

Еще, скрипт наглядно демонстрирует работу протокола SMTP и пример форматирования электронного письма с вложением)

Буду рад, если кому то пригодится, с наступающим Новым Годом!

отправь_мне_в_почту.1767076174.txt.gz · Last modified: 2025/12/30 09:29 by val