Когда вы работаете как root, вы работаете в каталоге / etc / openvpn
, и поэтому он находит там файл nordvpn.txt
.
Когда вы запускаете его с sudo
, вы запускаете его из другого каталога, и, как таковой, он не находит файл, так как файл конфигурации не ссылается на него с полным путем.
Я бы посоветовал изменить конфигурационный файл /etc/openvpn/ro2.nordvpn.com.udp1194.ovpn
;
, где вы найдете строку:
auth-user-pass nordvpn.txt
замените ее на:
auth-user-pass /etc/openvpn/nordvpn.txt
После этого вы сможете использовать ее из sudo
Поскольку кажется, что вы полностью контролируете сгенерированный текстовый файл, самым простым и, вероятно, наиболее переносимым способом было бы напрямую задействовать / usr / sbin / sendmail
.
/usr/sbin/sendmail -t < complete-mail.txt
Для этого вам потребуется добавить все важные заголовки самостоятельно ( From
, To
, Subject
и Content-Type
). Файл должен выглядеть так:
From: Company <noreply@company.example>
To: Customer <name@customer.example>
Subject: You are awesome
Content-Type: text/html
<html>…</html>
Postfix добавит недостающие, но обязательные заголовки, например Date
.
Вы даже читали руководство для mailx
, особенно параметр -a
?
-a файл
Прикрепите указанный файл к сообщению.
Из ответа Жиля , поскольку CentOS использует эту версию mailx
:
С Heirloom mailx нет удобного способа. Одна из возможностей вставки произвольных заголовков - установить editheaders = 1 и использовать внешний редактор (который может быть скриптом).
## Подготовьте временный сценарий, который будет служить редактором. ## Этот сценарий будет передан в ed. temp_script = $ (mktemp) cat << 'EOF' >> "$ temp_script" 1a Content-Type: text / html . $ r test.html w { {1}} q EOF ## Вызвать mailx и указать ему, чтобы он запускал скрипт редактора EDITOR = "ed -s $ temp_script" heirloom-mailx -S editheaders = 1 -s "Subject" to @ address << EOF ~ e . EOF rm -f "$ temp_script"
Postfix, безусловно, может отправлять электронные письма в формате HTML.