2026-06-15 14:30:43 +03:00
|
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
2026-06-15 14:43:38 +03:00
|
|
|
|
OVPN_DIR="/path/to/config/files"
|
|
|
|
|
|
EMAIL_LIST="/path/to/text/file/with/emails.txt"
|
2026-06-15 14:30:43 +03:00
|
|
|
|
SUBJECT="Ваш OpenVPN конфиг"
|
|
|
|
|
|
|
|
|
|
|
|
# Проверяем, что файл со списком существует
|
|
|
|
|
|
if [[ ! -f "$EMAIL_LIST" ]]; then
|
|
|
|
|
|
echo "Ошибка: файл $EMAIL_LIST не найден"
|
|
|
|
|
|
exit 1
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Читаем список
|
|
|
|
|
|
while read -r filename email; do
|
|
|
|
|
|
# Пропускаем пустые строки и комментарии
|
|
|
|
|
|
[[ -z "$filename" || "$filename" =~ ^# ]] && continue
|
|
|
|
|
|
|
|
|
|
|
|
OVPN_FILE="$OVPN_DIR/$filename"
|
|
|
|
|
|
|
|
|
|
|
|
if [[ ! -f "$OVPN_FILE" ]]; then
|
|
|
|
|
|
echo "Предупреждение: файл $OVPN_FILE не найден, пропускаем $email"
|
|
|
|
|
|
continue
|
|
|
|
|
|
fi
|
|
|
|
|
|
|
|
|
|
|
|
# Отправляем письмо с вложением
|
|
|
|
|
|
(
|
|
|
|
|
|
echo "Subject: $SUBJECT"
|
|
|
|
|
|
echo "To: $email"
|
|
|
|
|
|
echo "MIME-Version: 1.0"
|
|
|
|
|
|
echo "Content-Type: multipart/mixed; boundary=FILEBOUND"
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
echo "--FILEBOUND"
|
|
|
|
|
|
echo "Content-Type: text/plain; charset=utf-8"
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
echo "Здравствуйте!"
|
|
|
|
|
|
echo "Ваш OpenVPN конфигурационный файл прикреплён к этому письму."
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
echo "--FILEBOUND"
|
|
|
|
|
|
echo "Content-Type: application/x-openvpn-profile; name=\"$filename\""
|
|
|
|
|
|
echo "Content-Disposition: attachment; filename=\"$filename\""
|
|
|
|
|
|
echo "Content-Transfer-Encoding: base64"
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
base64 "$OVPN_FILE"
|
|
|
|
|
|
echo ""
|
|
|
|
|
|
echo "--FILEBOUND--"
|
|
|
|
|
|
) | sendmail -t
|
|
|
|
|
|
|
|
|
|
|
|
echo "Отправлено $filename -> $email"
|
|
|
|
|
|
|
|
|
|
|
|
done < "$EMAIL_LIST"
|
|
|
|
|
|
|
|
|
|
|
|
echo "Готово."
|