Как я могу -очистить мою конфигурацию DKIM после обновления exim?

mvлибо берет один файл и перемещает или переименовывает его, либо берет несколько файлов или каталогов и перемещает их в каталог. Вы не можете переименовать несколько файлов с помощью mv.

Вместо этого:

for name in *.*.fasta.gz; do
    newname=${name%.fasta.gz}         # remove filename suffix
    newname=${newname//./_}.fasta.gz  # replace dots with underscores and add suffix

    mv -i -- "$name" "$newname"
done

Это приведет к перебору всех ваших сжатых файлов fasta в текущем каталоге, содержащих хотя бы одну точку в другом месте имени, кроме суффикса имени файла. Это удалит известный суффикс имени файла (, в котором точки не должны заменяться символами подчеркивания ), а затем заменит все точки символами подчеркивания в оставшемся бите и re -прикрепит суффикс.

Окончательная замена будет работать в оболочке bash, но, возможно, не будет работать в оболочке /bin/sh.

Затем

mv -iиспользуется для переименования файла (запросит подтверждение, если новое имя уже существует ). Двойное тире(--)используется только в том случае, если какое-либо из имен начинается с тире (, они потенциально могут быть восприняты как наборы опций для mv, а двойное тире предотвращает это ).

2
10.09.2021, 05:21
1 ответ

Мне нравится ваша вступительная фраза.

У меня была аналогичная проблема, я использовал следующий макрос в своем основном разделе конфигурации:

DKIM_DOMAIN = ${lc:${domain_data:$h_from:}}
DKIM_SELECTOR = ${lookup{$dkim_domain} lsearch {/etc/exim4/dkim/tags} {$value} {defaultdkimtag}}

Вместе с файлом /etc/exim4/dkim/tags, который выглядит как:

mydomain.org: sometag
myotherdomain.org: 12345

Но результат DKIM_DOMAINявляется «испорченным», потому что $h_fromустановлен (потенциальным )злоумышленником. Чтобы не испортить его, вы должны заменить его известным -безопасным поиском.

Я сделал это так:

DKIM_DOMAIN = ${lookup{${lc:${domain:$h_from:}}} lsearch,ret=key {/etc/exim4/dkim/tags}}
  • Из (испорченных )$h_from...
  • Извлеките домен, используя ${domain:...}. Это все равно будет испорчено.
  • Принудительно перевести в нижний регистр ${lc:...}. Просто потому что. Все еще испорченный
  • Найдите испорченный домен в нижнем регистре с помощью lsearch в файле тегов. Здесь я использую опцию ret=key, что означает, что ret urned значение из поиска будет «заменено не -испорченной версией ключа поиска»
  • .
  • Таким образом, теперь он не испорчен и, следовательно, не влияет на последующее использование в других макросах и т. д.

Ваша конфигурация была

DKIM_DOMAIN = ${sg{${lc:${domain_data:$h_from:}}}{^www\.}{}}

Похоже, что ${domain_data:$h_from:}неверно-${domain_data:...}не указано как расширение строки .$domain_data— допустимая переменная, но это не то, что вы пытаетесь там сделать. -Я думаю, как и я, вы пытаетесь извлечь домен из $h_from. Так что здесь, я думаю, вы должны использовать${domain:$h_from:}(Я тоже не уверен, что такое двоеточие в конце, но я оставлю это вам)

Тогда у вас будет:

DKIM_DOMAIN = ${sg{${lc:${domain:$h_from:}}}{^www\.}{}}

Но это все равно будет испорчено, потому что вы разрешаете использовать любое внешнее значение в пути к файлу.

Итак, я бы предложил следующее решение:

FROM_DOMAIN_WITHOUT_WWW = ${sg{${lc:${domain:$h_from:}}}{^www\.}{}}
DKIM_DOMAIN = ${lookup{FROM_DOMAIN_WITHOUT_WWW} lsearch,ret=key {/etc/exim4/dkim/selector.map}}

Или, если вам не нравится лишний макрос:

DKIM_DOMAIN = ${lookup{${sg{${lc:${domain:$h_from:}}}{^www\.}{}}} lsearch,ret=key {/etc/exim4/dkim/selector.map}}
0
21.10.2021, 08:44

Теги

Похожие вопросы