Skip to content


Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?

Latest commit


Git stats


Failed to load latest commit information.

E-Mail Header Analyzer (MHA)


What is E-Mail header analyzer (MHA):

E-Mail header analyzer is a tool written in flask for parsing email headers and converting them to a human readable format and it also can:

  • Identify hop delays.
  • Identify the source of the email.
  • Identify hop country.

MHA is an alternative for the following:

Name Dev Issues
MessageHeader Google Not showing all the hops.
EmailHeaders Mxtoolbox Not accurate and slow.
Message Header Analyzer Microsoft Broken UI.


Install system dependencies:

sudo apt-get update
sudo apt-get install python3-pip
sudo pip3 install virtualenv

Create a Python3 virtual environment and activate it:

virtualenv virt
source virt/bin/activate

Clone the GitHub repo:

git clone

Install Python dependencies:

cd MHA
pip3 install -r requirements.txt

Run the development server: python3 -d

You can change the bind address or port by specifying the appropriate options: python3 -b -p 8080

Everything should go well, now visit http://localhost:8080.


A Dockerfile is provided if you wish to build a docker image.

docker build -t mha:latest .

You can then run a container with:

docker run -d -p 8080:8080 mha:latest


A docker-compose file is provided if you wish to use docker-compose.

Clone the GitHub repo:

git clone
cd email-header-analyzer

Let docker-compose do the work.

docker-compose up -d

Stop the container.

docker-compose down

HowTo enable debugging. Add in the docker docker-compose.yml file the line

command: --debug