В случае ошибки во время передачи файла - локального удаления не будет. Но и на удалённом сервере при разрыве коннекта файл окажется не целиком. Ну и при ошибке - будет вывод текста.
Чем больше знаю, тем лучше понимаю, как мало знаю.
Потому что в iptables прописаны эти порты (в таблице ufw-user-input), но из основной таблицы INPUT нет ни одной ссылки внутрь этой ufw-user-input. То есть нужна именно ссылка: iptables -A INPUT -j ufw-user-input.
И ещё, у самой таблицы ufw-user-input почему-то нет возврата из неё, делаем: iptables -A ufw-user-input -j RETURN.
Но все эти настройки не имеют значения, потому что у вас по умолчанию разрешены вообще все порты на этом сервере: Chain INPUT (policy ACCEPT!
Чем больше знаю, тем лучше понимаю, как мало знаю.
Так видно же по вашим скриншотам, что в конфигурации Apache (он Апач, а не апатч!) ошибка в параметре ServerName. Нужно указать доменное имя вашего сервера ServerName my-site.ru, разумеется заменив my-site.ru на ваше доменное имя.
А Nginx (кстати, а зачем там ещё и Nginx?!) не может запуститься из-за полного отсутствия конфигурационного файла /etc/nginx/nginx.conf. Нет конфигурации - нет и нормальной работы программы.
Чем больше знаю, тем лучше понимаю, как мало знаю.
Хм, так у этого msmtp есть аккаунты, в каждом из которых можно прописать отдельный ящик, со своим сервером-логином-паролем. Но через какой аккаунт будет работать PHP - определяется в php.ini (и в настройках HTTP сервера). А поскольку вам (скорее всего) нужно отправлять письма из одного и того же домена (или PHP-скрипта) через разные сервера/ящики - msmtp вам не подойдёт, внутри скрипта динамически менять аккаунт - не получится.