email autodiscovery
Project description
📩 myl-discovery
myl-discovery is a Python library designed to detect email settings of a given email address or domain.
📥 Installation
To install myl-discovery, run the following command:
pip install myl-discovery
📖 Usage
After installing the package, you can use the autodiscover
function to
discover the email settings for a domain. Here's an example:
from myldiscovery import autodiscover
settings = autodiscover("yourdomain.com") # or me@yourdomain.com
print(settings)
# For Exchange autodiscovery you need to provide credentials
settings = autodiscover(
'me@yourdomain.com',
username='WORKGROUP\me',
password='mypassword1234'
)
📄 Output
The autodiscover
function returns a dictionary with the detected settings.
The dictionary contains two keys, imap
and smtp
, each containing a
dictionary with the keys server
, port
, and starttls
.
Here's an example:
{
"imap": {
"server": "imap.yourdomain.com",
"port": 993,
"starttls": false,
"ssl": false
},
"smtp": {
"server": "smtp.yourdomain.com",
"port": 587,
"starttls": true,
"ssl": false
}
}
🧩 Autodiscover Functions
myl-discovery exposes several functions to discover email settings:
autodiscover
: This function wraps the below function do automatically detect the right settings. (See Autodiscover strategy for more information)autodiscover_srv
: This function attempts to resolve SRV records for the domain to discover IMAP and SMTP servers.autodiscover_exchange
: This function attempts to use the Exchange Autodiscover service to discover email settings. It requires a username and password.autodiscover_autoconfig
: This function attempts to fetch and parse an autoconfig XML file from a URL specified in the domain's TXT records.autodiscover_port_scan
: This function performs a port scan on the domain to discover open IMAP and SMTP ports.
🧠 Autodiscover Strategy
The autodiscover
function uses the following strategy to discover
email settings:
- It first attempts to use
autodiscover_autoconfig
to discover settings from an autoconfig/autodiscover URL specified in the domain's TXT records. - If that fails, it attempts to use
autodiscover_srv
to discover settings from the domain's SRV records. - If that fails and a password is provided, it attempts to use
autodiscover_exchange
to discover settings using the Exchange Autodiscover service (only if credentials were provided) - If all else fails, it uses
autodiscover_port_scan
to discover settings by performing a port scan on the domain.
💻 CLI usage
If you do not intend to use the Python library and just want to detect the connection settings of an arbitrary email, myl-discovery also ships with a CLI tool.
📥 Installation
pipx install myl-discovery
📖 Usage
$ myl-discovery --help
usage: myl-discovery [-h] [-j] [-d] [-u USERNAME] [-p PASSWORD] EMAIL
positional arguments:
EMAIL
options:
-h, --help show this help message and exit
-j, --json
-d, --debug
-u USERNAME, --username USERNAME
Username (Exchange only)
-p PASSWORD, --password PASSWORD
Password (Exchange only)
Example:
$ myl-discovery user01@gmail.com
Service Host Port Encryption
imap imap.gmail.com 993 tls
smtp smtp.gmail.com 587 tls
📜 License
myl-discovery is licensed under the GNU General Public License v3.0.
📑 Upstream docs
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
File details
Details for the file myl_discovery-0.6.1.tar.gz
.
File metadata
- Download URL: myl_discovery-0.6.1.tar.gz
- Upload date:
- Size: 46.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e6e94ccea77d628bc460228efc1da72d312f242f9b5bbea926d0eed5c3572c82 |
|
MD5 | 8ad92a5a193aecc52912c528702d64ac |
|
BLAKE2b-256 | 49059c69a28e249632d71ba979c5ef70147a774376bbc02a21e0ec4c973ca584 |
Provenance
The following attestation bundles were made for myl_discovery-0.6.1.tar.gz
:
Publisher:
pypi.yaml
on pschmitt/myl-discovery
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
myl_discovery-0.6.1.tar.gz
- Subject digest:
e6e94ccea77d628bc460228efc1da72d312f242f9b5bbea926d0eed5c3572c82
- Sigstore transparency entry: 145062763
- Sigstore integration time:
- Predicate type:
File details
Details for the file myl_discovery-0.6.1-py3-none-any.whl
.
File metadata
- Download URL: myl_discovery-0.6.1-py3-none-any.whl
- Upload date:
- Size: 31.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/5.1.1 CPython/3.12.7
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | d19f14bfae87ac71acbc38e703b820bde888ab5543e415e2c5a99c79edcabee0 |
|
MD5 | df1b4ab21500d6208d5c0a8cca8cfb9b |
|
BLAKE2b-256 | 5005804124d97717457c32c8ef33c2d9c2127e6ce1327c703bcc2a3b20679def |
Provenance
The following attestation bundles were made for myl_discovery-0.6.1-py3-none-any.whl
:
Publisher:
pypi.yaml
on pschmitt/myl-discovery
-
Statement type:
https://in-toto.io/Statement/v1
- Predicate type:
https://docs.pypi.org/attestations/publish/v1
- Subject name:
myl_discovery-0.6.1-py3-none-any.whl
- Subject digest:
d19f14bfae87ac71acbc38e703b820bde888ab5543e415e2c5a99c79edcabee0
- Sigstore transparency entry: 145062764
- Sigstore integration time:
- Predicate type: