Используя perl
-, предполагая только один #
во входных данных, как указано в образце
$ perl -pe 's/[^#]\K#.*|^#//' ip.txt
abc
nrt
clb1aX
amd
[^#]\K#.*
для удаления всех символов из первого вхождения #
, если ему предшествует символ, отличный от #
|^#
в противном случае удалить #
из начала строки
То же самое сsed
$ sed 's/\([^#]\)#.*\|^#/\1/' ip.txt
abc
nrt
clb1aX
amd
Если проблема связана с правами доступа, попробуйте более жесткие настройки.
chmod 0600
У вас есть две проблемы, одна из которых вызвана неправильной попыткой исправить другую
Mar 24 19:08:31 FQDN opendkim[17649]: can't load key from /etc/opendkim/keys/FQDN.example.com/mail.private: Permission denied
Эта ошибка сообщает вам, что учетная запись, работающая под управлением opendkim
, не может прочитать файлmail.private
(или один из промежуточных каталогов ).
opendkim-testkey: key not secure
Это говорит о том, что разрешения для этого файла (или одного из промежуточных каталогов )слишком слабые.
Необходимо убедиться, что учетная запись, на которой работает opendkim
, может получить доступ к секретному ключу, но никакая другая группа или процесс не могут этого сделать. К сожалению, я не запускаю OpenDKIM, поэтому я не могу сказать вам, каким должно быть правильное значение, но помните, что разрешения — это пользователь -группа -другое, поэтому chmod 0600 mail.private
может быть приемлемым и достаточным, если пользователь, работающий с opendkim
, владеет файл.
См. также Ошибки OpenDKIM на странице ServerFault.
В моем случае помогло это
chown -R opendkim:opendkim /etc/opendkim
chmod 0750 /etc/opendkim/keys
chmod 0600 /etc/opendkim/keys/default.private