A comprehensive Python SDK for interacting with Coremail XT API
Project description
Coremail SDK for Python
A comprehensive Python SDK for interacting with Coremail XT API v3, providing easy access to all available API endpoints for user, organization, and system management.
Features
- Full implementation of Coremail XT API v3 endpoints
- Easy configuration via environment variables or explicit parameters
- Automatic token management and caching
- Comprehensive type hints and documentation
- Support for all major API operations (user management, organization management, session management, etc.)
Installation
pip install coremail
Configuration
Create a .env file in your project root with the following variables:
COREMAIL_BASE_URL=http://your-coremail-server:9900/apiws/v3
COREMAIL_APP_ID=your_app_id@your_domain.com
COREMAIL_SECRET=your_secret_key
Usage
Basic Usage
from coremail import CoremailClient
# Initialize the client with environment variables
client = CoremailClient()
# Or with explicit parameters
client = CoremailClient(
base_url="http://your-host-of-coremail:9900/apiws/v3",
app_id="your_app_id@your-domain.com",
secret="your_secret_key"
)
# Example: Request a token
token = client.requestToken()
print(f"Token: {token}")
# Example: Get user attributes
user_attrs = client.getAttrs("test_user@your-domain.com")
print(f"User attributes: {user_attrs}")
User Management
# Create a new user
attrs = {
"display_name": "John Doe",
"cos_id": 1,
"quota": 1024
}
client.createUser("john.doe@your-domain.com", "password123", attrs)
# Get user attributes
user_attrs = client.getAttrs("john.doe@your-domain.com")
# Update user attributes
update_attrs = {"display_name": "Jane Doe", "quota": 2048}
client.setAttrs("john.doe@your-domain.com", update_attrs)
# Delete a user
client.delUser("john.doe@your-domain.com")
Organization Management
# Create an organization
org_attrs = {
"org_name": "Example Organization",
"domain_name": "example.com",
"cos_id": [1],
"num_of_classes": [100],
"org_status": 0,
"org_expiry_date": "2025-12-31"
}
client.addOrg("example_org", org_attrs)
# Get organization information
org_info = client.getOrgInfo("example_org")
# Update organization
update_attrs = {"org_name": "Updated Organization Name"}
client.alterOrg("example_org", update_attrs)
Session Management
# User login to get session ID
session_id = client.userLogin("user@domain.com")
print(f"Session ID: {session_id}")
# Check user session
user_info = client.sesTimeOut(session_id)
print(f"User info: {user_info}")
# Logout user
client.userLogout(session_id)
Available Methods
The SDK includes methods for all Coremail XT API v3 endpoints:
Access Token
requestToken()- Request a new access token
Login
userLogin(user_at_domain)- User login to get session IDuserLoginEx(user_at_domain, attrs)- User login with additional parametersuserExist(user_at_domain)- Check if user existsuserExist2(user_at_domain)- Check if a user without alias name exists (returns boolean)authenticate(user_at_domain, password)- Verify user passwordsesTimeOut(ses_id)- Check user's session and return user informationsesRefresh(ses_id)- Refresh user's sessiongetSessionVar(ses_id, ses_key)- Get variable from user's sessionuserLogout(ses_id)- Logout user sessionsetSessionVar(ses_id, ses_key, ses_var)- Set variable in user's session
Organization Management
addOrg(org_id, attrs)- Create organizationgetOrgInfo(org_id, attrs)- Get organization infoalterOrg(org_id, attrs)- Modify organizationaddOrgDomain(org_id, domain_name)- Add domain to organizationdelOrgDomain(org_id, domain_name)- Delete domain from organizationaddOrgCos(org_id, num_of_classes, cos_name, cos_id)- Add service levelalterOrgCos(org_id, num_of_classes, cos_name, cos_id)- Update service leveldelOrgCos(org_id, cos_id)- Delete service levelgetOrgCosUser(org_id, cos_id)- Get users in service levelgetOrgList()- Get list of organizationsaddUnit(org_id, unit_name, attrs)- Add organizational unitdelUnit(org_id, unit_name)- Delete organizational unitgetUnitAttrs(org_id, unit_name, attrs)- Get organizational unit attributessetUnitAttrs(org_id, unit_name, attrs)- Set organizational unit attributes
User Management
createUser(user_at_domain, password, attrs)- Create userdeleteUser(user_at_domain)- Delete usergetAttrs(user_at_domain, attrs)- Get user attributeschangeAttrs(user_at_domain, attrs)- Change user attributesaddSmtpAlias(user_at_domain, alias)- Add SMTP alias for userdelSmtpAlias(user_at_domain, alias)- Delete SMTP alias for usergetSmtpAlias(user_at_domain)- Get SMTP aliases for usersetAdminType(user_at_domain, admin_type)- Set admin type for usergetAdminType(user_at_domain)- Get admin type for userrenameUser(old_user_at_domain, new_user_at_domain)- Rename usermoveUser(user_at_domain, target_org_id, target_unit_name)- Move user to different organization/unit
Object Management
createObj(obj_type, obj_name, org_id, attrs)- Create object (e.g., mailing list)getObjAttrs(obj_type, obj_name, org_id, attrs)- Get object attributessetObjAttrs(obj_type, obj_name, org_id, attrs)- Set object attributesdeleteObj(obj_type, obj_name, org_id)- Delete object
Domain Management
domainExist(domain_name)- Check if domain existsgetDomainList(start, limit)- Get domain listaddDomain25(domain_name, attrs)- Add domain for port 25 (SMTP)delDomain25(domain_name)- Delete domain for port 25 (SMTP)addDomainAlias(domain_name, alias_domain_name)- Add domain aliasgetDomainAlias(domain_name)- Get domain aliasesdelDomainAlias(domain_name, alias_domain_name)- Delete domain aliasgetOrgListByDomain(domain_name)- Get organization list by domain
Mail Information
listMailInfos(user_at_domain, start_time, end_time, attrs)- List mail informationgetNewMailInfos(user_at_domain, start_time, end_time, attrs)- Get new mail information
Transport
smtpTransport(sender, recipient, content)- SMTP transport for message delivery
User Lookup
getUserFromCasName(cas_name)- Get user email address from CAS name
Error Handling
The SDK raises exceptions for API errors:
try:
user_attrs = client.getAttrs("nonexistent_user@domain.com")
except Exception as e:
print(f"API Error: {e}")
Development
To run the example:
python example.py
License
This project is licensed under the MIT License - see the LICENSE file for details.
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
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file coremail-0.4.2.tar.gz.
File metadata
- Download URL: coremail-0.4.2.tar.gz
- Upload date:
- Size: 12.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
9606a778ed4210dc59a988bd0828c6a99c360c2d6d748e5f9594418227d9a03f
|
|
| MD5 |
d8d3cc27de5acca1be20c329bb87bc7a
|
|
| BLAKE2b-256 |
a5338f1351f80fc7b9bfb0f35f6235f75490bf444a4b5ab1601279b68b2b30fe
|
File details
Details for the file coremail-0.4.2-py3-none-any.whl.
File metadata
- Download URL: coremail-0.4.2-py3-none-any.whl
- Upload date:
- Size: 10.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.9.11 {"installer":{"name":"uv","version":"0.9.11"},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1908614a5ed0c215c16c5273c35b77f0c63ac73002dd9886f77cf769c2b3481b
|
|
| MD5 |
a1438c769e315c0c25fb281e2d87b6e8
|
|
| BLAKE2b-256 |
4644a642e88674d612a46c7762c53ca806f0ae6163df43401c4268814ca561e7
|