SpartaSystems / holdmail

HoldMail is a Java Application for proxying SMTP mail, providing a browsable viewer for captured emails.
Apache License 2.0
32 stars 15 forks source link

Filter emails by Environment #75

Open praveenaram opened 6 years ago

praveenaram commented 6 years ago

Question/Issue Overview The email list grows too fast, and it is difficult to test notifications. We could find emails by recipient, but with few challenges:

Expected Behavior

View emails from each environment

Current Behavior

Today we have Holdmail configured for different environments - QA, DEV, Perf. All notifications from these environments are displayed.

-Rajni & Praveena

kblief commented 6 years ago

It sounds like you want to implement multiple environments in a single instance, is that correct?

kblief commented 6 years ago

Are you using the same database for all environments?

barryoneill commented 6 years ago

@praveenaram Nice idea! In the emails that come from your different environments, have a look at the 'Original Message' tab. Find the 'Received' header, e.g.:

Received: from somewhere.com (localhost [0:0:0:0:0:0:0:1])
        by 10.233.140.99
        with SMTP (HoldMailSMTPServer SMTP) id JDYOBJ9U
        for herp@derp.com
        Thu, 22 Feb 2018 10:39:48 -0500 (EST)

Does that header show a unique 'from' IP for each of your environments?

@kblief If so, maybe we could add some code to allow filter based on the last hop sender.. (It was actually one of the dummy entries ('Sender IP') under the "Recipient Email" dropdown I had in the prototype. Maybe release 2.1 could start adding some alternate search methods, including this one...

praveenaram commented 6 years ago

@kblief yes, we are using same database for all environments.

@barryoneill the from has 2 unique IPs per environment (depends on load balancer)

Example in Dev, for 2 different emails:

Received: from ip-172-31-57-213 (localhost [127.0.0.1]) by ip-172-31-57-213.localdomain (Postfix) with ESMTP id 0D85B9301DE for opkeycisupplier@sparta.com; Sat, 17 Feb 2018 14:13:01 +0000 (UTC)

Received: from ip-172-31-42-75 (localhost [127.0.0.1]) by ip-172-31-42-75.localdomain (Postfix) with ESMTP id 65557863F82 for opkeycisupplier@sparta.com; Tue, 20 Feb 2018 17:00:56 +0000 (UTC)

kblief commented 6 years ago

@praveenaram Would it work to do a seperate db schema per environment, as a first simple fix.

I see there could be issues with the origin IP in an environment with multiple email relays.

barryoneill commented 6 years ago

Yeah, multiple holdmail deployments is the easier fix.

Even if there are multiple relays, the IP address being in the list of hops should be enough to find the mails in a search?

kblief commented 6 years ago

The app could support custom mail headers. The producing app could set a custom header and holdmail could filter on headers.

barryoneill commented 6 years ago

Not sure how realistic that one is - I added a ticket while in Sparta to add that to the product in question, and it never got prioritized.. :)

barryoneill commented 6 years ago

We should be able to add a generic search function to Holdmail, that can query any header to find those containing the provided text. I'm sure there are other use cases other than just this one..