Instant Mailing List Manager for Support Centers
Project description
Introduction
Amane is an instant mailing list manager. Its basic idea has come from QuickML (https://github.com/masui/QuickML) but it’s not the same. QuickML is a common easy-to-use mailing list manager, but Amane has been developed to manage requests by email. So Amane is a kind of ticket management system like Redmine.
Difference between QuickML and Amane
Mail destination to create a new mailing list
QuickML: the first mail account will be used for further posts.
Amane: it has a specific mail account to create the new one. When a mail received, a new mail account will be created and used.
On Amane, you can define staff members to register new mailing lists automatically. They can’t be removed via member-removing mails.
Amane supports multi-tenancy. Each tenant has a mail account to create mailing lists, subject prefix, staff members, various message templates.
On Amane, each post will have a system message as an attachment. It can contain basic mailing-list usage and a list of members.
Difference between Redmine and Amane
Redmine is web-based, but Amane is mail-based.
Redmine users can customize ticket status, but Amane users cannot.
Redmine users can define importance of tickets, but Amane users cannot.
Redmine users can define ticket workflows, but Amane users cannot.
How to use Amane
- Creating a new ticket
Send a mail to the specific mail address (e.g. ask@example.com *1) to create new one. Amane will create a new mailing list with its own mail address (e.g. ml-000001@example.com) and forward the initial mail to members including addresses at To:, Cc: and From: except *1.
- Making a new post
Send a mail to the mailing list address (e.g. ml-000001@example.com).
- Register new members
Send a mail with new addresses as Cc: to the mailing list address.
- Unregister members
Send a mail with empty Subject: and addresses to be removed as Cc: to the mailing list address.
- Closing the ticket
Send a mail with “Subject: close” to the mailing list address.
How to install Amane
Run commands below:
# yum install mongodb-server # pip install amane
How to configure Amane
Amane has 2 confiugration files.
Amane confiugration file (/etc/amane/amane.conf)
A YAML file like below:
db_name: amane db_url: mongodb://localhost/ relay_host: localhost relay_port: 25 listen_address: 192.168.0.1 listen_port: 25 log_file: /var/log/amane.log domain: example.com
db_url, db_name … URI and DB name of MongoDB
relay_host, relay_port … IP address and port number of the external SMTP server (relay host) for sending posts
listen_address, listen_port …IP address and port number that amane_smptd will listen
log_file … Path to a log file used by Amane commands
domain … Domain name of the mail addresses amane_smtpd will handle
Tenant confiugration file
A YAML file like below:
admins: - staff1@staff.example.com - staff2@staff.example.com charset: iso-2022-jp ml_name_format: ml-%06d new_ml_account: ask days_to_close: 7 days_to_orphan: 7 readme_msg: | Please send posts to {{ ml_address }}. To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} welcome_msg: | {{ mailfrom }} has created a new ticket. Please send further posts to {{ ml_address }}. To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} add_msg: | {{ mailfrom }} has registered members below: {{ cc | join('\r\n') }} To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} remove_msg: | {{ mailfrom }} has unregistered members below: {{ cc | join('\r\n') }} Current members and staffs only can register them again. To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} goodbye_msg: | {{ mailfrom }} has closed this ticket. Please send a post {{ new_ml_address }} for a new ticket. Current members (except staffs): {{ members | join('\r\n') }} reopen_msg: | {{ mailfrom }} has reopened this ticket. To register new members: send a post with their mail addresses as Cc: To unregister members: send a post with their mail addresses as Cc: and empty Subject: To close a mailing list: send a post with "Subject: close" Current members (except staffs): {{ members | join('\r\n') }} report_subject: Daily status report report_msg: | Today's status: New Tickets =========== {% for m in new -%} - ml_name: {{ m.ml_name }} subject: {{ m.subject }} created: {{ m.created }} updated: {{ m.updated }} by: {{ m.by }} {% endfor %} Open Tickets ============ {% for m in open -%} - ml_name: {{ m.ml_name }} subject: {{ m.subject }} created: {{ m.created }} updated: {{ m.updated }} by: {{ m.by }} {% endfor %} Orphaned Tickets ================ {% for m in orphaned -%} - ml_name: {{ m.ml_name }} subject: {{ m.subject }} created: {{ m.created }} updated: {{ m.updated }} by: {{ m.by }} {% endfor %} Recently Closed Tickets ======================= {% for m in closed -%} - ml_name: {{ m.ml_name }} subject: {{ m.subject }} created: {{ m.created }} updated: {{ m.updated }} by: {{ m.by }} {% endfor %} orphaned_subject: This ticket will be closed soon orphaned_msg: | This message was sent automatically. This ticket will be closed 7 days later if no post is sent. closed_subject: This ticket was closed closed_msg: | This message was sent automatically. This ticket was closed because it was inactive in the past week. Please send a post to {{ new_ml_address }} for a new ticket.
admins … List of staff’s mail addresses
charset … Default character set of the message body. For example: us-ascii
ml_name_format … Format of newly created mailing list account. For example, “ml-%06d” will cause a mail address like “ml-000001@<domain>”.
new_ml_account … A mail account for creating new mailing lists
days_to_orphan … Days from the last post that the system will change the status of open ticket as “orphaned”
days_to_close … Days that the system will close “orphaned” tickets
welcome_msg … Template of the attached text file for the new tickets
readme_msg … Template of the attached text file for the usual posts
remove_msg … Template of the attached text file for the posts removing members
reopen_msg … Template of the attached text file for the reopened tickets
goodbye_msg … Template of the attached text file for the posts closing tickets
report_subject, report_msg … Subject and message template of daily status reports for staffs
orphaned_subject, orphaned_msg … Subject and message template of notification mails on making tickets orphaned automatically
closed_subject, closed_msg … Subject and message template of notification mails on making tickets closed automatically
You can register a new tenant to the DB like below:
# amanectl tenant create <tenant_name> --yamlfile <tenant_configuration_file>
To modify tenant configuration
Using a modified tenant configuration file:
# amanectl tenant update <tenant_name> --yamlfile <tenant_configuration_file>
Using command line options:
# amanectl tenant update <tenant_name> <option> <new-value> [<option> <new-value> ...]
How to start the service
Run amane_smtpd like below:
# amane_smtpd &
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 Distributions
Built Distribution
File details
Details for the file amane-1.0.1-py2.py3-none-any.whl
.
File metadata
- Download URL: amane-1.0.1-py2.py3-none-any.whl
- Upload date:
- Size: 40.3 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 06a995f3f5886133bad3b9096a7c6be34ed3f93da42458f21f1eb2e328219e7d |
|
MD5 | ee8a09802711fcd17e58ed5117515825 |
|
BLAKE2b-256 | 8a722fddfcfabcb4df73af8793be51c68ea551b81f9089ed643251ba693e0249 |