"команда mail в linux" запускается и забывается или ждет, пока не будет отправлена ​​почта? - PullRequest
3 голосов
/ 20 июля 2011

Я пытаюсь отправить почту с сервера приложений, используя следующий код

FILE *mailer = popen("/usr/bin/mail -s 'Some subject here' user@domain", "w");
fprintf(mailer, "Hello %s,\nThis note is to inform you that your job completed successfully.\n", username);
pclose(mailer);

Вопрос в том, нужно ли мне для этого форкнуть поток?
если команда «mail» имеет значение «запустить и забыть», а не «ждать до отправки»,
Я думаю, мне не нужна отдельная тема для этого.

Я использую постфикс для MTA.

1 Ответ

2 голосов
/ 20 июля 2011

Не обычно. mail запустит агент пересылки почты, передаст ему сообщение и позволит запустить его в фоновом режиме. Если у вас установлена ​​опция sendwait, она будет ждать ее отправки. Это применимо как при использовании MTA, например sendmail или postfix, так и при использовании SMTP напрямую (под влиянием опции smtp).

Итак, вам нужно знать, установлена ​​ли опция sendwait - если вы не устанавливаете ее в командной строке, тогда она может быть установлена ​​в .mailrc или как переменная среды.

Все это описано чуть более подробно на странице руководства, если вы хотите узнать больше.

...