Предположим, здесь у вас есть почта для destination@example.net
, которая должна быть доставлена.
Карты, указанные в virtual_alias_domains
, ищутся с использованием части домена (example.net
) в качестве ключа, ожидается, что вернется что-нибудь, если это виртуальный домен алиаса, иначе ничего, т.е. этот ключ должен быть неопределен. Карты в virtual_alias_maps
ищутся с использованием полного адреса (destination@example.net
) в качестве ключа, ожидается, что будет возвращен переписанный адрес.
Это означает, что вы можете использовать один файл карты для обоих поисков, как и простую хэш-карту /etc/postfix/virtual
, описанную в virtual (5). В конфигурации Postfix по умолчанию (virtual_alias_domains = $virtual_alias_maps
) предполагается карта такого смешанного стиля.
example.net OK
aaa@example.net hijacked@example.com
bbb@example.net hijacked@example.com
Важные правила этих поисков:
virtual_alias_maps
ищутся рекурсивно. Если он возвращает тот же адрес, что и ключ, то этот адрес используется. virtual_alias_maps
, все еще находится в virtual_alias_domains
, то поиск считается неудачным (User unknown in virtual alias table
). Это, кажется, не документировано явно, я узнал из этой темы. Поэтому ваша первая regexp карта (/^.+$/ hijacked@example.com
) и конфигурация проблематичны, потому что карта соответствует всему, поэтому hijacked@example.com
все еще находится в virtual_alias_domains
и получает отказ.
Вы можете избежать этого, не указывая ничего в virtual_alias_domains
, или использовать другую regexp карту, которая не соответствует ни одной доменной строке (/^.+@.+$/ hijacked@example.com
).
Но ни один из этих вариантов не кажется мне правильной конфигурацией, а лишь неинтуитивным обходным решением. Думаю, для вашей цели есть более подходящее решение.
Когда вы говорите, что он принимает ввод в интерактивном режиме, это означает, что он читает из stdin
. Мы можем воспроизвести это, повторив ввод вstdin
:
echo "D" | java -jar oswbba.jar -i /opt/oracle/tfa/repository/suptools/<HOSTNAME>/oswbb/oracle/archive
Обратите внимание, что echo
автоматически заканчивается символом новой строки.
Если вам нужны дополнительные данные, вы можете:
echo -e "D\n<next_input>\n<next_input>" |...
Флаг -e
позволяет интерпретировать управляющие последовательности, такие как \n
.