(1) Самый простой способ определить Postfix - это, вероятно, iptables --owner --uid-owner postfix
match, чтобы указать пользователя Postfix. Вы также можете запустить Postfix в его собственном сетевом пространстве имен или cgroup, подобно решениям в Блокировать сетевой доступ процесса? (и разрешить только этому пространству имен или cgroup отправлять SMTP-трафик).
(2) Сценарий, запускающий sendmail
, уже имеет аутентификацию: он выполняется от имени пользователя вашей системы. Существует множество вещей, которые используют этот интерфейс. Cron - один из них, но также и куча случайных скриптов - практически все в системе, отправляющей электронную почту, использует его. Даже установленные MUA (mutt и т.д.) часто используют его по умолчанию.
Предположительно, вы можете заблокировать его только для определенных пользователей, либо используя разрешения файловой системы (сделать его исполняемым только для определенной группы или определенных пользователей с помощью ACL), либо, возможно, конфигурацию Postfix (хотя лично я использую Exim, поэтому не уверен, как это сделать).
Я использую что-то похожее на то, что вы хотите:
setw -g window-status-format "#[underscore]#{?#{==:#{window_panes},1},,+}#[bold]#W#[nobold]:#{=|-24|…;s|$HOME|~|:pane_current_path}"
Немного уменьшив это, чтобы сосредоточиться на pane_current_path
искажении:
"#{=|-24|…;s|$HOME|~|:pane_current_path}"
Это заменяет домашний каталог на ~
и удаляет все, кроме правого -большинства 24 символов. При этом, однако, я замечаю, что ведущий ~
удаляется для длинных путей.
Только лист пути:
"#{s|$HOME|~|;s|.*/||:pane_current_path}"
В тот раз я сначала поставил замену ~
, чтобы, когда вы дома, отображалось ~
, а не <username>
.
Итак, чтобы приблизиться к вашему ~/t/src
примеру:
"#{s|$HOME|~|;s|/.*/|/…/|:pane_current_path}"
будет отображаться как ~/…/src
. Вы должны иметь возможность использовать модифицированный шаблон и обратную ссылку, возможно, в сочетании с усекателем #{=
, чтобы приблизиться, но я не уверен, что все правильно.