В некотором роде, у меня был сервис systemd, который, как оказалось, systemd «убьет» его через 30 с.
systemctl status service-name
покажет main process exited, code=exited, status=1/FAILURE
по истечении 30 секунд.
Он будет нормально работать "изолированно" (, например, вручную в терминале с той же средой).
Оказывается,
Type=forking
...
Environment=ABC="TRUE"
ExecStart=/path/to/my_script_to_spawn_process.sh
в my_script_to_spawn_process.sh
он делал
/bin/something > /dev/null 2>&1 &
который работает, но отбрасывает информацию журнала вывода (обычно он идет к файл, или, если не это, возможноjournalctl
).
Изменение его для входа в другое место, например/bin/something > /tmp/my_file
, а затем отслеживание /tmp/my_file
выявило настоящую причину. Это было (по касательной ), что вы не можете использовать синтаксис Environment=ABC="true"
, как вы можете в bash, это должно быть без кавычек или ключевое значение все в кавычках, например Environment="ABC=true"
, из-за чего мой процесс завершался «на этапе настройки» примерно через 30 с.
Вам нужна версия библиотеки libstdc++.so
, которая содержит как минимум GLIBCXX 3.4.20
и CXXABI_1.3.8
.
Из версии ядра вы используете CentOS 7, где версия libtsdc++.so
недостаточно свежая.
Вы можете увидеть это с помощью команды:
strings -d /usr/lib64/libstdc++.so.6 | grep -Ei '^glibcxx|^cxxabi'
Вы увидите, что у вас есть максимум 3.4.19 и 1.3.7 соответственно, потому что CentOS 7 имеет GCC 4.8.5
, который был выпущен 23 июня 2015 года.
Я бы порекомендовал GCC 8, который намного более поздний и включает версию libstdc++.so
, которая вам нужна. Вам придется скомпилировать его из исходного кода и добавить в свою LD _LIBRARY _PATH, а затем скомпилировать emailrelay
из исходного кода, так как RPM будет искать пакет, содержащий более новую версию, для установки в вашей системе. что невозможно из-за конфликтов.
Вы можете сделать то, что вы описываете, используя пакет postfix
, уже доступный в CentOS. Не нужно полагаться на сомнительный RPM на sourceforge.
Существуют десятки руководств по настройке постфикса для использования узла ретрансляции smarthost через gmail. Вот руководство, в котором есть все шаги.
После настройки вам нужно будет открыть брандмауэр, чтобы хост Windows мог обращаться к порту 25 на сервере CentOS.