Я пытаюсь написать сценарий оболочки, куда передаются электронные письма (по электронной почте, пересылаемой в cpanel).
Затем сценарий оболочки отправит все электронное письмо по URL-адресу с помощью curl.
Скрипт выглядит так:
curl -d "param=$1" http://localhost/stuff/
А форвард выглядит так:
|/home/usr/script/curlthis.sh
Это всего лишь вид работы.
Электронное письмо возвращается, даже если curl успешно отправляет URL-адрес. (похоже, публикуется только часть письма, но я не уверен на 100%)
Мне сказали, что электронная почта не возвращается, потому что я не читаю стандартный ввод, но я не уверен, почему мне нужно это делать и почему я не могу использовать $1?
Как я могу прочитать все содержимое канала (затем опубликовать его с помощью curl) и помешает ли это почтовому серверу вернуть его обратно?
ИЗМЕНИТЬ
Используя приведенный ниже ответ, вот что я придумал:
#!/bin/bash
m=$(cat -)
escapedm="$(perl -MURI::Escape -e 'print uri_escape($ARGV[0]);' "$m")"
curl -silent -G -d "param=$escapedm" http://localhost/stuff/ 2>&1 >/dev/null
Эта часть:
2>&1 >/dev/null
шокирующе важно. Если вы не перенаправите stdout/err на null, электронное письмо будет возвращено по какой-либо причине.