Назад | Перейти на главную страницу

Почему mail -E позволяет мне отправлять пустые сообщения?

~ > which mail
/bin/mail
~ > ls -la /bin/mail
lrwxrwxrwx 1 root root 22 Feb 25 14:18 /bin/mail -> /etc/alternatives/mail

В соответствии с man mail,

-E Если исходящее сообщение не содержит текста в своей первой или единственной части сообщения, не отправлять его, а молча отбрасывать, эффективно устанавливая переменную skipemptybody при запуске программы. Это полезно для отправки сообщений из скриптов, запускаемых cron (8).

Однако даже с -E, мой скрипт cron, который использует echo, по-прежнему отправляет пустые сообщения. Происходит (по сути) следующее:

logmsg=""
echo "$logmsg" | mail -E -s "Log Message" me@mydomain.tld

Я что-то неправильно понял? Почему mail -E отправлять электронные письма с пустыми сообщениями?

Комментарий HBruijn исправил это для меня, другими словами:

Это письмо было отправлено:

echo '' | mail -E -s "echo ''" root

но этого не было:

echo -n '' | mail -E -s "echo -n ''" root

Ваше электронное письмо содержит тему, поэтому оно не пустое. Что происходит, когда вы пытаетесь отправить его без -s "Log Message"?