What if you create a SharePoint list with all of the subject lines. Make sure it is required and that the field value must be unique so there cannot be duplicate subject lines. Then add a text field with the forward to e-mail address and any other details needed to process them.
You can add a trigger condition so it only triggers when the subject equals one of the 30 subject lines. For example:
@or(
equals(triggerOutputs()?['body/subject'], 'abc1'),
equals(triggerOutputs()?['body/subject'], 'abc2'),
equals(triggerOutputs()?['body/subject'], 'abc3')
)
Keep adding to this for each of the 30 subject lines. Just keep in mind, this requires an exact match for the flow to trigger including case. If you want the flow to trigger on either abc1 or ABC1, you should write the trigger condition like this:
@or(
equals(toLower(triggerOutputs()?['body/subject']), 'abc1'),
equals(toLower(triggerOutputs()?['body/subject']), 'abc2'),
equals(toLower(triggerOutputs()?['body/subject']), 'abc3')
)
When the flow triggers, use a get items action with a query filter to get the SharePoint list item that matches the subject line: Title eq '@{toLower(triggerOutputs()?['body/subject'])}'. You can use information from the matching item to get the e-mail address to forward the e-mail.
When you do this, it will put it into an apply to each, but since the e-mail subjects are unique and your filter query will use eq in the expression, it should either return 1 or 0 items. You can use a condition with a length() expression to make sure 1 item is returned. Then you can put the apply to each on the yes side of the condition and let the no side handle error processing.
This will not solve your problem of not being able to forward the e-mails. But why can't you just create a new e-mail, address it to the recipient, and populate the new e-mail with information from the received e-mail?