Это некорректная обработка openssls SIGPIPE
. head
, а также dd
закроют трубу, когда получат свои 5 МБ. Это вызывает ошибку EPIPE
в системном вызове write ()
, когда процесс openssl пытается записать в канал:
EPIPE fd подключен к каналу или сокету, чтение которого заканчивается закрыто. Когда это происходит, процесс записи также получит сигнал SIGPIPE.
openssl затем умер из-за сигнала, а не завершился обычным образом.Вы можете проверить это в своем примере, используя:
$ openssl enc -aes-256-ctr -pass pass:password -nosalt < /dev/zero | head -c 5M >file
error writing output file
$ echo ${PIPESTATUS[@]}
1 0
Массив $ PIPESTATUS
содержит значения выхода процессов внутри каналов. Вы видите, что процесс openssl завершился с кодом выхода 1.
Однако, чтобы преодолеть эту ошибку, используйте head
или dd
перед openssl в конвейере:
$ head -c 5M /dev/zero | openssl enc -aes-256-ctr -pass pass:password -nosalt >file
$ echo ${PIPESTATUS[@]}
0 0
На самом деле не имеет значения, что ваш сервер использует DKIM. Подпись DKIM добавляется отправителем, и для ее создания требуется закрытый ключ отправителя.
В рамках подписания DKIM почтовый сервер отправителя берет некоторые заголовки, обычно включая заголовок Date, объединяет их и криптографически подписывает результат. Если вы измените любой из этих заголовков или добавите тот, которого не было, вы измените составную строку, и подпись станет недействительной.
Почта, которую вы показываете, не подписана DKIM.
Краткая версия: :Вы не можете делать то, о чем просите.