git subrepo clone https://github.com/mailcow/mailcow-dockerized.git mailcow/src/mailcow-dockerized
subrepo: subdir: "mailcow/src/mailcow-dockerized"
merged: "a832becb"
upstream: origin: "https://github.com/mailcow/mailcow-dockerized.git"
branch: "master"
commit: "a832becb"
git-subrepo: version: "0.4.3"
origin: "???"
commit: "???"
Change-Id: If5be2d621a211e164c9b6577adaa7884449f16b5
diff --git a/mailcow/src/mailcow-dockerized/data/web/api/openapi.yaml b/mailcow/src/mailcow-dockerized/data/web/api/openapi.yaml
new file mode 100644
index 0000000..a14c47d
--- /dev/null
+++ b/mailcow/src/mailcow-dockerized/data/web/api/openapi.yaml
@@ -0,0 +1,5238 @@
+openapi: 3.0.0
+info:
+ description: >-
+ mailcow is complete e-mailing solution with advanced antispam, antivirus,
+ nice UI and API.
+
+
+ In order to use this API you have to create a API key and add your IP
+ address to the whitelist of allowed IPs this can be done by logging into the
+ Mailcow UI using your admin account, then go to Configuration > Access >
+ Edit administrator details > API. There you will find a collapsed API menu.
+
+
+ There are two types of API keys
+ - The read only key can only be used for all get endpoints
+ - The read write key can be used for all endpoints
+
+ title: mailcow API
+ version: "1.0.0"
+
+servers:
+ - url: /
+
+components:
+ securitySchemes:
+ ApiKeyAuth:
+ type: apiKey
+ in: header
+ name: X-API-Key
+ responses:
+ Unauthorized:
+ description: Unauthorized
+ content:
+ application/json:
+ schema:
+ type: object
+ properties:
+ type:
+ type: string
+ example: error
+ msg:
+ type: string
+ example: authentication failed
+ required:
+ - type
+ - msg
+
+security:
+ - ApiKeyAuth: []
+
+paths:
+ /api/v1/add/alias:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - add
+ - alias
+ - active: "1"
+ address: alias@domain.tld
+ goto: destination@domain.tld
+ - null
+ msg:
+ - alias_added
+ - alias@domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Aliases
+ description: >-
+ You may create your own mailbox alias using this action. It takes a JSON
+ object containing a domain informations.
+
+ Only one `goto*` option can be used, for ex. if you want learn as spam,
+ then send just `goto_spam = 1` in request body.
+ operationId: Create alias
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ active: "1"
+ address: alias@domain.tld
+ goto: destination@domain.tld
+ properties:
+ active:
+ description: is alias active or not
+ type: boolean
+ address:
+ description: 'alias address, for catchall use "@domain.tld"'
+ type: string
+ goto:
+ description: "destination address, comma separated"
+ type: string
+ goto_ham:
+ description: learn as ham
+ type: boolean
+ goto_null:
+ description: silently ignore
+ type: boolean
+ goto_spam:
+ description: learn as spam
+ type: boolean
+ type: object
+ summary: Create alias
+ /api/v1/add/app-passwd:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - app_passwd
+ - add
+ - active: "1"
+ app_name: emclient
+ app_passwd: keyleudecticidechothistishownsan31
+ app_passwd2: keyleudecticidechothistishownsan31
+ username: hello@mailcow.email
+ msg: app_passwd_added
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - App Passwords
+ description: >-
+ Using this endpoint you can create a new app password for a specific
+ mailbox.
+ operationId: Create App Password
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ active: "1"
+ username: info@domain.tld
+ app_name: wordpress
+ app_passwd: keyleudecticidechothistishownsan31
+ app_passwd2: keyleudecticidechothistishownsan31
+ properties:
+ active:
+ description: is alias active or not
+ type: boolean
+ username:
+ description: mailbox for which the app password should be created
+ type: string
+ app_name:
+ description: name of your app password
+ type: string
+ app_passwd:
+ description: your app password
+ type: string
+ app_passwd2:
+ description: your app password
+ type: string
+ type: object
+ summary: Create App Password
+ /api/v1/add/bcc:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - bcc
+ - add
+ - active: "1"
+ bcc_dest: bcc@awesomecow.tld
+ local_dest: mailcow.tld
+ type: sender
+ - null
+ msg: bcc_saved
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Address Rewriting
+ description: >-
+ Using this endpoint you can create a BCC map to forward all mails via a
+ bcc for a given domain.
+ operationId: Create BCC Map
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ active: "1"
+ bcc_dest: bcc@awesomecow.tld
+ local_dest: mailcow.tld
+ type: sender
+ properties:
+ active:
+ description: 1 for a active user account 0 for a disabled user account
+ type: number
+ bcc_dest:
+ description: the email address where all mails should be send to
+ type: string
+ local_dest:
+ description: the domain which emails should be forwarded
+ type: string
+ type:
+ description: the type of bcc map can be `sender` or `recipient`
+ type: string
+ type: object
+ summary: Create BCC Map
+ /api/v1/add/dkim:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - dkim
+ - add
+ - dkim_selector: dkim
+ domains: hanspeterlol.de
+ key_size: "2048"
+ msg:
+ - dkim_added
+ - hanspeterlol.de
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - DKIM
+ description: Using this endpoint you can generate new DKIM keys.
+ operationId: Generate DKIM Key
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ dkim_selector: dkim
+ domains: mailcow.tld
+ key_size: "2048"
+ properties:
+ dkim_selector:
+ description: the DKIM selector default dkim
+ type: string
+ domains:
+ description: a list of domains for which a dkim key should be generated
+ type: string
+ key_size:
+ description: the key size (1024 or 2048)
+ type: number
+ type: object
+ summary: Generate DKIM Key
+ /api/v1/add/dkim_duplicate:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - dkim
+ - duplicate
+ - from_domain: mailcow.tld
+ to_domain: awesomecow.tld
+ msg:
+ - dkim_duplicated
+ - mailcow.tld
+ - awesomecow.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - DKIM
+ description: Using this endpoint you can duplicate the DKIM Key of one domain.
+ operationId: Duplicate DKIM Key
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ from_domain: mailcow.tld
+ to_domain: awesomecow.tld
+ properties:
+ fron_domain:
+ description: the domain where the dkim key should be copied from
+ type: string
+ to_domain:
+ description: the domain where the dkim key should be copied to
+ type: string
+ type: object
+ summary: Duplicate DKIM Key
+ /api/v1/add/domain:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - ratelimit
+ - edit
+ - domain
+ - object: domain.tld
+ rl_frame: s
+ rl_value: "10"
+ msg:
+ - rl_saved
+ - domain.tld
+ type: success
+ - log:
+ - mailbox
+ - add
+ - domain
+ - active: "1"
+ aliases: "400"
+ backupmx: "0"
+ defquota: "3072"
+ description: some decsription
+ domain: domain.tld
+ lang: cs
+ mailboxes: "10"
+ maxquota: "10240"
+ quota: "10240"
+ relay_all_recipients: "0"
+ rl_frame: s
+ rl_value: "10"
+ - null
+ msg:
+ - domain_added
+ - domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Domains
+ description: >-
+ You may create your own domain using this action. It takes a JSON object
+ containing a domain informations.
+ operationId: Create domain
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ active: "1"
+ aliases: "400"
+ backupmx: "0"
+ defquota: "3072"
+ description: some decsription
+ domain: domain.tld
+ lang: cs
+ mailboxes: "10"
+ maxquota: "10240"
+ quota: "10240"
+ relay_all_recipients: "0"
+ rl_frame: s
+ rl_value: "10"
+ properties:
+ active:
+ description: is domain active or not
+ type: boolean
+ aliases:
+ description: limit count of aliases associated with this domain
+ type: number
+ backupmx:
+ description: relay domain or not
+ type: boolean
+ defquota:
+ description: predefined mailbox quota in `add mailbox` form
+ type: number
+ description:
+ description: Description of domain
+ type: string
+ domain:
+ description: Fully qualified domain name
+ type: string
+ lang:
+ description: language code
+ enum:
+ - sk
+ - cs
+ - de
+ - en
+ - es
+ - fr
+ - lv
+ - nl
+ - pl
+ - pt
+ - ru
+ - it
+ - ca
+ type: string
+ mailboxes:
+ description: limit count of mailboxes associated with this domain
+ type: number
+ maxquota:
+ description: maximum quota per mailbox
+ type: number
+ quota:
+ description: maximum quota for this domain (for all mailboxes in sum)
+ type: number
+ relay_all_recipients:
+ description: >-
+ if not, them you have to create "dummy" mailbox for each
+ address to relay
+ type: boolean
+ rl_frame:
+ enum:
+ - s
+ - m
+ - h
+ - d
+ type: string
+ rl_value:
+ description: rate limit value
+ type: number
+ type: object
+ summary: Create domain
+ /api/v1/add/domain-admin:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - domain_admin
+ - add
+ - active: "1"
+ domains: mailcow.tld
+ password: "*"
+ password2: "*"
+ username: testadmin
+ msg:
+ - domain_admin_added
+ - testadmin
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Domain admin
+ description: >-
+ Using this endpoint you can create a new Domain Admin user. This user
+ has full control over a domain, and can create new mailboxes and
+ aliases.
+ operationId: Create Domain Admin user
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ active: "1"
+ domains: mailcow.tld
+ password: supersecurepw
+ password2: supersecurepw
+ username: testadmin
+ properties:
+ active:
+ description: 1 for a active user account 0 for a disabled user account
+ type: number
+ domains:
+ description: the domains the user should be a admin of
+ type: string
+ password:
+ description: domain admin user password
+ type: string
+ password2:
+ description: domain admin user password
+ type: string
+ username:
+ description: the username for the admin user
+ type: string
+ type: object
+ summary: Create Domain Admin user
+ /api/v1/edit/da-acl:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - type: success
+ log:
+ - acl
+ - edit
+ - testadmin
+ - username:
+ - testadmin
+ da_acl:
+ - syncjobs
+ - quarantine
+ - login_as
+ - sogo_access
+ - app_passwds
+ - bcc_maps
+ - pushover
+ - filters
+ - ratelimit
+ - spam_policy
+ - extend_sender_acl
+ - unlimited_quota
+ - protocol_access
+ - smtp_ip_access
+ - alias_domains
+ - domain_desc
+ msg:
+ - acl_saved
+ - testadmin
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Domain admin
+ description: >-
+ Using this endpoint you can edit the ACLs of a Domain Admin user. This user
+ has full control over a domain, and can create new mailboxes and
+ aliases.
+ operationId: Edit Domain Admin ACL
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ items:
+ - testadmin
+ attr:
+ da_acl:
+ - syncjobs
+ - quarantine
+ - login_as
+ - sogo_access
+ - app_passwds
+ - bcc_maps
+ - pushover
+ - filters
+ - ratelimit
+ - spam_policy
+ - extend_sender_acl
+ - unlimited_quota
+ - protocol_access
+ - smtp_ip_access
+ - alias_domains
+ - domain_desc
+ properties:
+ items:
+ description: contains the domain admin username you want to edit
+ type: object
+ attr:
+ properties:
+ da_acl:
+ description: contains the list of acl names that are active for this user
+ type: object
+ type: object
+ summary: Edit Domain Admin ACL
+ /api/v1/edit/domain-admin:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - type: success
+ log:
+ - domain_admin
+ - edit
+ - username: testadmin
+ active: ["0","1"]
+ username_new: testadmin
+ domains: ["domain.tld"]
+ password: "*"
+ password2: "*"
+ msg:
+ - domain_admin_modified
+ - testadmin
+ schema:
+ properties:
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Domain admin
+ description: >-
+ Using this endpoint you can edit a existing Domain Admin user. This user
+ has full control over a domain, and can create new mailboxes and
+ aliases.
+ operationId: Edit Domain Admin user
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ items:
+ - testadmin
+ attr:
+ active:
+ - '0'
+ - '1'
+ username_new: testadmin
+ domains: ["domain.tld"]
+ password: supersecurepassword
+ password2: supersecurepassword
+ properties:
+ attr:
+ properties:
+ active:
+ description: is the domain admin active or not
+ type: boolean
+ username_new:
+ description: the username of the domain admin, change this to change the username
+ type: string
+ domains:
+ description: a list of all domains managed by this domain admin
+ type: array
+ items:
+ type: string
+ password:
+ description: the new domain admin user password
+ type: string
+ password2:
+ description: the new domain admin user password for confirmation
+ type: string
+ type: object
+ items:
+ description: contains the domain admin username you want to edit
+ type: object
+ summary: Edit Domain Admin user
+ /api/v1/add/domain-policy:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - policy
+ - add
+ - domain
+ - domain: domain.tld
+ object_from: "*@baddomain.tld"
+ object_list: bl
+ msg:
+ - domain_modified
+ - domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Domain antispam policies
+ description: >-
+ You may create your own domain policy using this action. It takes a JSON
+ object containing a domain informations.
+ operationId: Create domain policy
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ domain: domain.tld
+ object_from: "*@baddomain.tld"
+ object_list: bl
+ properties:
+ domain:
+ description: domain name to which policy is associated to
+ type: string
+ object_from:
+ description: exact address or use wildcard to match whole domain
+ type: string
+ object_list:
+ enum:
+ - wl
+ - bl
+ type: string
+ type: object
+ summary: Create domain policy
+ /api/v1/add/fwdhost:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - fwdhost
+ - add
+ - filter_spam: "0"
+ hostname: hosted.mailcow.de
+ msg:
+ - forwarding_host_added
+ - "5.1.76.202, 2a00:f820:417::202"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Fordwarding Hosts
+ description: >-
+ Add a new Forwarding host to mailcow. You can chose to enable or disable
+ spam filtering of incoming emails by specifing `filter_spam` 0 =
+ inactive, 1 = active.
+ operationId: Add Forward Host
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ filter_spam: "0"
+ hostname: hosted.mailcow.de
+ properties:
+ filter_spam:
+ description: "1 to enable spam filter, 0 to disable spam filter"
+ type: number
+ hostname:
+ description: contains the hostname you want to add
+ type: string
+ type: object
+ summary: Add Forward Host
+ /api/v1/add/mailbox:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - add
+ - mailbox
+ - active: "1"
+ domain: domain.tld
+ local_part: info
+ name: Full name
+ password: "*"
+ password2: "*"
+ quota: "3072"
+ force_pw_update: "1"
+ tls_enforce_in: "1"
+ tls_enforce_out: "1"
+ - null
+ msg:
+ - mailbox_added
+ - info@domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Mailboxes
+ description: >-
+ You may create your own mailbox using this action. It takes a JSON
+ object containing a domain informations.
+ operationId: Create mailbox
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ active: "1"
+ domain: domain.tld
+ local_part: info
+ name: Full name
+ password: atedismonsin
+ password2: atedismonsin
+ quota: "3072"
+ force_pw_update: "1"
+ tls_enforce_in: "1"
+ tls_enforce_out: "1"
+ properties:
+ active:
+ description: is mailbox active or not
+ type: boolean
+ domain:
+ description: domain name
+ type: string
+ local_part:
+ description: left part of email address
+ type: string
+ name:
+ description: Full name of the mailbox user
+ type: string
+ password2:
+ description: mailbox password for confirmation
+ type: string
+ pasword:
+ description: mailbox password
+ type: string
+ quota:
+ description: mailbox quota
+ type: number
+ force_pw_update:
+ description: forces the user to update its password on first login
+ type: boolean
+ tls_enforce_in:
+ description: force inbound email tls encryption
+ type: boolean
+ tls_enforce_out:
+ description: force oubound tmail tls encryption
+ type: boolean
+ type: object
+ summary: Create mailbox
+
+ /api/v1/add/oauth2-client:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - oauth2
+ - add
+ - client
+ - redirect_uri: "https://mailcow.tld"
+ msg: Added client access
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - oAuth Clients
+ description: Using this endpoint you can create a oAuth clients.
+ operationId: Create oAuth Client
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ redirect_uri: "https://mailcow.tld"
+ properties:
+ redirect_uri:
+ description: the uri where you should be redirected after oAuth
+ type: string
+ type: object
+ summary: Create oAuth Client
+ /api/v1/add/recipient_map:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - recipient_map
+ - add
+ - active: "1"
+ recipient_map_new: target@mailcow.tld
+ recipient_map_old: recipient@mailcow.tld
+ - null
+ msg:
+ - recipient_map_entry_saved
+ - recipient@mailcow.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Address Rewriting
+ description: >-
+ Using this endpoint you can create a recipient map to forward all mails
+ from one email address to another.
+ operationId: Create Recipient Map
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ active: "1"
+ recipient_map_new: target@mailcow.tld
+ recipient_map_old: recipient@mailcow.tld
+ properties:
+ active:
+ description: 1 for a active user account 0 for a disabled user account
+ type: number
+ recipient_map_new:
+ description: the email address that should receive the forwarded emails
+ type: string
+ recipient_map_old:
+ description: the email address which emails should be forwarded
+ type: string
+ type: object
+ summary: Create Recipient Map
+ /api/v1/add/relayhost:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - relayhost
+ - add
+ - hostname: "mailcow.tld:25"
+ password: supersecurepassword
+ username: testuser
+ msg:
+ - relayhost_added
+ - ""
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Routing
+ description: Using this endpoint you can create Sender-Dependent Transports.
+ operationId: Create Sender-Dependent Transports
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ hostname: "mailcow.tld:25"
+ password: supersecurepassword
+ username: testuser
+ properties:
+ hostname:
+ description: the hostname of the smtp server with port
+ type: string
+ password:
+ description: the password for the smtp user
+ type: string
+ username:
+ description: the username used to authenticate
+ type: string
+ type: object
+ summary: Create Sender-Dependent Transports
+ /api/v1/add/resource:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - add
+ - resource
+ - active: "1"
+ description: test
+ domain: mailcow.tld
+ kind: location
+ multiple_bookings: "0"
+ multiple_bookings_custom: ""
+ multiple_bookings_select: "0"
+ - null
+ msg:
+ - resource_added
+ - mailcow.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Resources
+ description: Using this endpoint you can create Resources.
+ operationId: Create Resources
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ active: "1"
+ description: test
+ domain: mailcow.tld
+ kind: location
+ multiple_bookings: "0"
+ multiple_bookings_custom: ""
+ multiple_bookings_select: "0"
+ properties:
+ active:
+ description: 1 for a active transport map 0 for a disabled transport map
+ type: number
+ description:
+ description: a description of the resource
+ type: string
+ domain:
+ description: the domain for which the resource should be
+ type: string
+ kind:
+ description: the kind of recouse
+ enum:
+ - location
+ - group
+ - thing
+ type: string
+ multiple_bookings:
+ enum:
+ - "-1"
+ - "1"
+ - custom
+ type: string
+ multiple_bookings_custom:
+ description: always empty
+ type: number
+ multiple_bookings_select:
+ enum:
+ - "-1"
+ - "1"
+ - custom
+ type: string
+ type: object
+ summary: Create Resources
+ /api/v1/add/syncjob:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - add
+ - syncjob
+ - active: "1"
+ automap: "1"
+ custom_params: ""
+ delete1: "0"
+ delete2: "0"
+ delete2duplicates: "1"
+ enc1: SSL
+ exclude: (?i)spam|(?i)junk
+ host1: imap.server.tld
+ maxage: "0"
+ maxbytespersecond: "0"
+ mins_interval: "20"
+ password1: supersecret
+ port1: 993
+ skipcrossduplicates: "0"
+ subfolder2: External
+ subscribeall: "1"
+ timeout1: "600"
+ timeout2: "600"
+ user1: username
+ username: mailbox@domain.tld
+ - null
+ msg:
+ - mailbox_modified
+ - mailbox@domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Sync jobs
+ description: >-
+ You can create new sync job using this action. It takes a JSON object
+ containing a domain informations.
+ operationId: Create sync job
+ summary: Create sync job
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ username: lisa@mailcow.tld
+ host1: mail.mailcow.tld
+ port1: "143"
+ user1: demo@mailcow.tld
+ password1: supersecretpw
+ enc1: TLS
+ mins_interval: "20"
+ subfolder2: "/SyncIntoSubfolder"
+ maxage: "0"
+ maxbytespersecond: "0"
+ timeout1: "600"
+ timeout2: "600"
+ exclude: "(?i)spam|(?i)junk"
+ custom_params: "--dry"
+ delete2duplicates: "1"
+ delete1: "1"
+ delete2: "0"
+ automap: "1"
+ skipcrossduplicates: "0"
+ subscribeall: "0"
+ active: "1"
+ properties:
+ parameters:
+ description: your local mailcow mailbox
+ type: string
+ host1:
+ description: the smtp server where mails should be synced from
+ type: string
+ port1:
+ description: the smtp port of the target mail server
+ type: string
+ password:
+ description: the password of the mailbox
+ type: string
+ enc1:
+ description: the encryption method used to connect to the mailserver
+ type: string
+ mins_internal:
+ description: the interval in which messages should be syned
+ type: number
+ subfolder2:
+ description: sync into subfolder on destination (empty = do not use subfolder)
+ type: string
+ maxage:
+ description: only sync messages up to this age in days
+ type: number
+ maxbytespersecond:
+ description: max speed transfer limit for the sync
+ type: number
+ timeout1:
+ description: timeout for connection to remote host
+ type: number
+ timeout2:
+ description: timeout for connection to local host
+ type: number
+ exclude:
+ description: exclude objects (regex)
+ type: string
+ custom_params:
+ description: custom parameters
+ type: string
+ delete2duplicates:
+ description: delete duplicates on destination (--delete2duplicates)
+ type: boolean
+ delete1:
+ description: delete from source when completed (--delete1)
+ type: boolean
+ delete2:
+ description: delete messages on destination that are not on source (--delete2)
+ type: boolean
+ automap:
+ description: try to automap folders ("Sent items", "Sent" => "Sent" etc.) (--automap)
+ type: boolean
+ skipcrossduplicates:
+ description: skip duplicate messages across folders (first come, first serve) (--skipcrossduplicates)
+ type: boolean
+ subscribeall:
+ description: subscribe all folders (--subscribeall)
+ type: boolean
+ active:
+ description: enables or disables the sync job
+ type: boolean
+ type: object
+ /api/v1/add/tls-policy-map:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - tls_policy_maps
+ - add
+ - parameters: ""
+ active: "1"
+ dest: mailcow.tld
+ policy: encrypt
+ - null
+ msg:
+ - tls_policy_map_entry_saved
+ - mailcow.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Outgoing TLS Policy Map Overrides
+ description: Using this endpoint you can create a TLS policy map override.
+ operationId: Create TLS Policy Map
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ parameters: ""
+ active: "1"
+ dest: mailcow.tld
+ policy: encrypt
+ properties:
+ parameters:
+ description: >-
+ custom parameters you find out more about them
+ [here](http://www.postfix.org/postconf.5.html#smtp_tls_policy_maps)
+ type: string
+ active:
+ description: 1 for a active user account 0 for a disabled user account
+ type: number
+ dest:
+ description: the target domain or email address
+ type: string
+ policy:
+ description: the policy
+ enum:
+ - none
+ - may
+ - encrypt
+ - dane
+ - "'dane"
+ - fingerprint
+ - verify
+ - secure
+ type: string
+ type: object
+ summary: Create TLS Policy Map
+ /api/v1/add/transport/all:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - transport
+ - add
+ - active: "1"
+ destination: example2.org
+ nexthop: "host:25"
+ password: supersecurepw
+ username: testuser
+ msg:
+ - relayhost_added
+ - ""
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Routing
+ description: Using this endpoint you can create Sender-Dependent Transports.
+ operationId: Create Transport Maps
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ active: "1"
+ destination: example.org
+ nexthop: "host:25"
+ password: supersecurepw
+ username: testuser
+ properties:
+ active:
+ description: 1 for a active transport map 0 for a disabled transport map
+ type: number
+ destination:
+ type: string
+ nexthop:
+ type: string
+ password:
+ description: the password for the smtp user
+ type: string
+ username:
+ description: the username used to authenticate
+ type: string
+ type: object
+ summary: Create Transport Maps
+ /api/v1/delete/alias:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - delete
+ - alias
+ - id:
+ - "6"
+ - "9"
+ - null
+ msg:
+ - alias_removed
+ - alias@domain.tld
+ type: success
+ - log:
+ - mailbox
+ - delete
+ - alias
+ - id:
+ - "6"
+ - "9"
+ - null
+ msg:
+ - alias_removed
+ - alias2@domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Aliases
+ description: You can delete one or more aliases.
+ operationId: Delete alias
+ requestBody:
+ content:
+ application/json:
+ schema:
+ items:
+ example: "6"
+ type: string
+ type: array
+ summary: Delete alias
+ /api/v1/delete/app-passwd:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - app_passwd
+ - delete
+ - id:
+ - "2"
+ msg:
+ - app_passwd_removed
+ - "2"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - App Passwords
+ description: Using this endpoint you can delete a single app password.
+ operationId: Delete App Password
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "1"
+ properties:
+ items:
+ description: contains list of app passwords you want to delete
+ type: object
+ type: object
+ summary: Delete App Password
+ /api/v1/delete/bcc:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - bcc
+ - delete
+ - id:
+ - "4"
+ - null
+ msg:
+ - bcc_deleted
+ - "4"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Address Rewriting
+ description: >-
+ Using this endpoint you can delete a BCC map, for this you have to know
+ its ID. You can get the ID using the GET method.
+ operationId: Delete BCC Map
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "3"
+ properties:
+ items:
+ description: contains list of bcc maps you want to delete
+ type: object
+ type: object
+ summary: Delete BCC Map
+ /api/v1/delete/dkim:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - dkim
+ - delete
+ - domains:
+ - mailcow.tld
+ msg:
+ - dkim_removed
+ - mailcow.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - DKIM
+ description: Using this endpoint a existing DKIM Key can be deleted
+ operationId: Delete DKIM Key
+ requestBody:
+ content:
+ application/json:
+ schema:
+ items:
+ example:
+ - mailcow.tld
+ type: string
+ type: array
+ summary: Delete DKIM Key
+ /api/v1/delete/domain:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - delete
+ - domain
+ - domain:
+ - domain.tld
+ - domain2.tld
+ - null
+ msg:
+ - domain_removed
+ - domain.tld
+ type: success
+ - log:
+ - mailbox
+ - delete
+ - domain
+ - domain:
+ - domain.tld
+ - domain2.tld
+ - null
+ msg:
+ - domain_removed
+ - domain2.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Domains
+ description: You can delete one or more domains.
+ operationId: Delete domain
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - domain.tld
+ - domain2.tld
+ properties:
+ items:
+ description: contains list of domains you want to delete
+ type: object
+ type: object
+ summary: Delete domain
+ /api/v1/delete/domain-admin:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - domain_admin
+ - delete
+ - username:
+ - testadmin
+ msg:
+ - domain_admin_removed
+ - testadmin
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Domain admin
+ description: Using this endpoint a existing Domain Admin user can be deleted.
+ operationId: Delete Domain Admin
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - testadmin
+ properties:
+ items:
+ description: contains list of usernames of the users you want to delete
+ type: object
+ type: object
+ summary: Delete Domain Admin
+ /api/v1/delete/domain-policy:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - policy
+ - delete
+ - domain
+ - prefid:
+ - "1"
+ - "2"
+ msg:
+ - item_deleted
+ - "1"
+ type: success
+ - log:
+ - policy
+ - delete
+ - domain
+ - prefid:
+ - "1"
+ - "2"
+ msg:
+ - item_deleted
+ - "2"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Domain antispam policies
+ description: You can delete one o more domain policies.
+ operationId: Delete domain policy
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "1"
+ - "2"
+ properties:
+ items:
+ description: contains list of domain policys you want to delete
+ type: object
+ type: object
+ summary: Delete domain policy
+ /api/v1/delete/fwdhost:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - fwdhost
+ - delete
+ - forwardinghost:
+ - 5.1.76.202
+ - "2a00:f820:417::202"
+ msg:
+ - forwarding_host_removed
+ - 5.1.76.202
+ type: success
+ - log:
+ - fwdhost
+ - delete
+ - forwardinghost:
+ - 5.1.76.202
+ - "2a00:f820:417::202"
+ msg:
+ - forwarding_host_removed
+ - "2a00:f820:417::202"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Fordwarding Hosts
+ description: >-
+ Using this endpoint you can delete a forwarding host, in order to do so
+ you need to know the IP of the host.
+ operationId: Delete Forward Host
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - 5.1.76.202
+ - "2a00:f820:417::202"
+ properties:
+ ip:
+ description: contains the ip of the fowarding host you want to delete
+ type: string
+ type: object
+ summary: Delete Forward Host
+ /api/v1/delete/mailbox:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - delete
+ - mailbox
+ - username:
+ - info@domain.tld
+ - sales@domain.tld
+ - null
+ msg:
+ - mailbox_removed
+ - info@domain.tld
+ type: success
+ - log:
+ - mailbox
+ - delete
+ - mailbox
+ - username:
+ - info@domain.tld
+ - sales@domain.tld
+ - null
+ msg:
+ - mailbox_removed
+ - sales@domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Mailboxes
+ description: You can delete one or more mailboxes.
+ operationId: Delete mailbox
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - info@domain.tld
+ - sales@domain.tld
+ properties:
+ items:
+ description: contains list of mailboxes you want to delete
+ type: object
+ type: object
+ summary: Delete mailbox
+ /api/v1/delete/mailq:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ msg: Task completed
+ type: success
+ description: OK
+ headers: {}
+ tags:
+ - Queue Manager
+ description: >-
+ Using this API you can delete the current mail queue. This will delete
+ all mails in it.
+
+ This API uses the command: `postsuper -d`
+ operationId: Delete Queue
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ action: super_delete
+ properties:
+ action:
+ description: use super_delete to delete the mail queue
+ type: string
+ type: object
+ summary: Delete Queue
+ /api/v1/delete/oauth2-client:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - oauth2
+ - delete
+ - client
+ - id:
+ - "1"
+ msg:
+ - items_deleted
+ - "1"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - oAuth Clients
+ description: >-
+ Using this endpoint you can delete a oAuth client, for this you have to
+ know its ID. You can get the ID using the GET method.
+ operationId: Delete oAuth Client
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "3"
+ properties:
+ items:
+ description: contains list of oAuth clients you want to delete
+ type: object
+ type: object
+ summary: Delete oAuth Client
+ /api/v1/delete/qitem:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - quarantine
+ - delete
+ - id:
+ - "33"
+ msg:
+ - item_deleted
+ - "33"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Quarantine
+ description: >-
+ Using this endpoint you can delete a email from quarantine, for this you
+ have to know its ID. You can get the ID using the GET method.
+ operationId: Delete mails in Quarantine
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "33"
+ properties:
+ items:
+ description: contains list of emails you want to delete
+ type: object
+ type: object
+ summary: Delete mails in Quarantine
+ /api/v1/delete/recipient_map:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - recipient_map
+ - delete
+ - id:
+ - "1"
+ - null
+ msg:
+ - recipient_map_entry_deleted
+ - "1"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Address Rewriting
+ description: >-
+ Using this endpoint you can delete a recipient map, for this you have to
+ know its ID. You can get the ID using the GET method.
+ operationId: Delete Recipient Map
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "1"
+ properties:
+ items:
+ description: contains list of recipient maps you want to delete
+ type: object
+ type: object
+ summary: Delete Recipient Map
+ /api/v1/delete/relayhost:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - relayhost
+ - delete
+ - id:
+ - "1"
+ msg:
+ - relayhost_removed
+ - "1"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Routing
+ description: >-
+ Using this endpoint you can delete a Sender-Dependent Transport, for
+ this you have to know its ID. You can get the ID using the GET method.
+ operationId: Delete Sender-Dependent Transports
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "1"
+ properties:
+ items:
+ description: >-
+ contains list of Sender-Dependent Transport you want to
+ delete
+ type: object
+ type: object
+ summary: Delete Sender-Dependent Transports
+ /api/v1/delete/resource:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - delete
+ - resource
+ - name:
+ - test@mailcow.tld
+ - null
+ msg:
+ - resource_removed
+ - test@mailcow.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Resources
+ description: >-
+ Using this endpoint you can delete a Resources, for this you have to
+ know its ID. You can get the ID using the GET method.
+ operationId: Delete Resources
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - test@mailcow.tld
+ properties:
+ items:
+ description: contains list of Resources you want to delete
+ type: object
+ type: object
+ summary: Delete Resources
+ /api/v1/delete/syncjob:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ log:
+ - entity
+ - action
+ - object
+ msg:
+ - message
+ - entity name
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Sync jobs
+ description: You can delete one or more sync jobs.
+ operationId: Delete sync job
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "6"
+ - "9"
+ properties:
+ items:
+ description: contains list of aliases you want to delete
+ type: object
+ type: object
+ summary: Delete sync job
+ /api/v1/delete/tls-policy-map:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - tls_policy_maps
+ - delete
+ - id:
+ - "1"
+ - null
+ msg:
+ - tls_policy_map_entry_deleted
+ - "1"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Outgoing TLS Policy Map Overrides
+ description: >-
+ Using this endpoint you can delete a TLS Policy Map, for this you have
+ to know its ID. You can get the ID using the GET method.
+ operationId: Delete TLS Policy Map
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "3"
+ properties:
+ items:
+ description: contains list of tls policy maps you want to delete
+ type: object
+ type: object
+ summary: Delete TLS Policy Map
+ /api/v1/delete/transport:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - transport
+ - delete
+ - id:
+ - "1"
+ msg:
+ - relayhost_removed
+ - "1"
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Routing
+ description: >-
+ Using this endpoint you can delete a Transport Maps, for this you have
+ to know its ID. You can get the ID using the GET method.
+ operationId: Delete Transport Maps
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - "1"
+ properties:
+ items:
+ description: contains list of transport maps you want to delete
+ type: object
+ type: object
+ summary: Delete Transport Maps
+ /api/v1/edit/alias:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - edit
+ - alias
+ - active: "1"
+ address: alias@domain.tld
+ goto: destination@domain.tld
+ id:
+ - "6"
+ private_comment: private comment
+ public_comment: public comment
+ - null
+ msg:
+ - alias_modified
+ - alias@domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Aliases
+ description: >-
+ You can update one or more aliases per request. You can also send just
+ attributes you want to change
+ operationId: Update alias
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ active: "1"
+ address: alias@domain.tld
+ goto: destination@domain.tld
+ private_comment: private comment
+ public_comment: public comment
+ items: ["6"]
+ properties:
+ attr:
+ properties:
+ active:
+ description: is alias active or not
+ type: boolean
+ address:
+ description: 'alias address, for catchall use "@domain.tld"'
+ type: string
+ goto:
+ description: "destination address, comma separated"
+ type: string
+ goto_ham:
+ description: learn as ham
+ type: boolean
+ goto_null:
+ description: silently ignore
+ type: boolean
+ goto_spam:
+ description: learn as spam
+ type: boolean
+ private_comment:
+ type: string
+ public_comment:
+ type: string
+ type: object
+ items:
+ description: contains list of aliases you want update
+ type: object
+ type: object
+ summary: Update alias
+ /api/v1/edit/domain:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ "*/*":
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Domains
+ description: >-
+ You can update one or more domains per request. You can also send just
+ attributes you want to change.
+
+ Example: You can add domain names to items list and in attr object just
+ include `"active": "0"` to deactivate domains.
+ operationId: Update domain
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ active: "1"
+ aliases: "400"
+ backupmx: "1"
+ defquota: "3072"
+ description: domain description
+ gal: "1"
+ lang: cs
+ mailboxes: "10"
+ maxquota: "10240"
+ quota: "10240"
+ relay_all_recipients: "0"
+ relayhost: "2"
+ items: domain.tld
+ properties:
+ attr:
+ properties:
+ active:
+ description: is domain active or not
+ type: boolean
+ aliases:
+ description: limit count of aliases associated with this domain
+ type: number
+ backupmx:
+ description: relay domain or not
+ type: boolean
+ defquota:
+ description: predefined mailbox quota in `add mailbox` form
+ type: number
+ description:
+ description: Description of domain
+ type: string
+ gal:
+ description: >-
+ is domain global address list active or not, it enables
+ shared contacts accross domain in SOGo webmail
+ type: boolean
+ lang:
+ description: language code
+ enum:
+ - sk
+ - cs
+ - de
+ - en
+ - es
+ - fr
+ - lv
+ - nl
+ - pl
+ - pt
+ - ru
+ - it
+ - ca
+ type: string
+ mailboxes:
+ description: limit count of mailboxes associated with this domain
+ type: number
+ maxquota:
+ description: maximum quota per mailbox
+ type: number
+ quota:
+ description: maximum quota for this domain (for all mailboxes in sum)
+ type: number
+ relay_all_recipients:
+ description: >-
+ if not, them you have to create "dummy" mailbox for each
+ address to relay
+ type: boolean
+ relayhost:
+ description: id of relayhost
+ type: number
+ type: object
+ items:
+ description: contains list of domain names you want update
+ type: object
+ type: object
+ summary: Update domain
+ /api/v1/edit/fail2ban:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ "*/*":
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Fail2Ban
+ description: >-
+ Using this endpoint you can edit the Fail2Ban config and black or
+ whitelist new ips.
+ operationId: Edit Fail2Ban
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ ban_time: "86400"
+ blacklist: "10.100.6.5/32,10.100.8.4/32"
+ max_attempts: "5"
+ netban_ipv4: "24"
+ netban_ipv6: "64"
+ retry_window: "600"
+ whitelist: mailcow.tld
+ items: none
+ properties:
+ attr:
+ description: array containing the fail2ban settings
+ properties:
+ backlist:
+ description: the backlisted ips or hostnames separated by comma
+ type: string
+ ban_time:
+ description: the time a ip should be banned
+ type: number
+ max_attempts:
+ description: the maximum numbe of wrong logins before a ip is banned
+ type: number
+ netban_ipv4:
+ description: the networks mask to ban for ipv4
+ type: number
+ netban_ipv6:
+ description: the networks mask to ban for ipv6
+ type: number
+ retry_window:
+ description: >-
+ the maximum time in which a ip as to login with false
+ credentials to be banned
+ type: number
+ whitelist:
+ description: whitelisted ips or hostnames sepereated by comma
+ type: string
+ type: object
+ items:
+ description: has to be none
+ type: object
+ summary: Edit Fail2Ban
+ /api/v1/edit/mailbox:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - mailbox
+ - edit
+ - mailbox
+ - active: "1"
+ force_pw_update: "0"
+ name: Full name
+ password: "*"
+ password2: "*"
+ quota: "3072"
+ sender_acl:
+ - default
+ - info@domain2.tld
+ - domain3.tld
+ - "*"
+ sogo_access: "1"
+ username:
+ - info@domain.tld
+ - null
+ msg:
+ - mailbox_modified
+ - info@domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Mailboxes
+ description: >-
+ You can update one or more mailboxes per request. You can also send just
+ attributes you want to change
+ operationId: Update mailbox
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ active: "1"
+ force_pw_update: "0"
+ name: Full name
+ password: ""
+ password2: ""
+ quota: "3072"
+ sender_acl:
+ - default
+ - info@domain2.tld
+ - domain3.tld
+ - "*"
+ sogo_access: "1"
+ items: info@domain.tld
+ properties:
+ attr:
+ properties:
+ active:
+ description: is mailbox active or not
+ type: boolean
+ force_pw_update:
+ description: force user to change password on next login
+ type: boolean
+ name:
+ description: Full name of the mailbox user
+ type: string
+ password2:
+ description: new mailbox password for confirmation
+ type: string
+ pasword:
+ description: new mailbox password
+ type: string
+ quota:
+ description: mailbox quota
+ type: number
+ sender_acl:
+ description: list of allowed send from addresses
+ type: object
+ sogo_access:
+ description: is access to SOGo webmail active or not
+ type: boolean
+ type: object
+ items:
+ description: contains list of mailboxes you want update
+ type: object
+ type: object
+ summary: Update mailbox
+ /api/v1/edit/mailq:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ msg: Task completed
+ type: success
+ description: OK
+ headers: {}
+ tags:
+ - Queue Manager
+ description: >-
+ Using this API you can flush the current mail queue. This will try to
+ deliver all mails currently in it.
+
+ This API uses the command: `postqueue -f`
+ operationId: Flush Queue
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ action: flush
+ properties:
+ action:
+ description: use flush to flush the mail queue
+ type: string
+ type: object
+ summary: Flush Queue
+ /api/v1/edit/pushover:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - pushover
+ - edit
+ - active: "0"
+ evaluate_x_prio: "0"
+ key: 21e8918e1jksdjcpis712
+ only_x_prio: "0"
+ senders: ""
+ senders_regex: ""
+ text: ""
+ title: Mail
+ token: 9023e2ohcwed27d1idu2
+ username:
+ - info@domain.tld
+ msg: pushover_settings_edited
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Mailboxes
+ description: >-
+ Using this endpoint it is possible to update the pushover settings for
+ mailboxes
+ operationId: Update Pushover settings
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ active: "0"
+ evaluate_x_prio: "0"
+ key: 21e8918e1jksdjcpis712
+ only_x_prio: "0"
+ senders: ""
+ senders_regex: ""
+ text: ""
+ title: Mail
+ token: 9023e2ohcwed27d1idu2
+ items: info@domain.tld
+ properties:
+ attr:
+ properties:
+ active:
+ description: Enables pushover 1 disable pushover 0
+ type: number
+ evaluate_x_prio:
+ description: Send the Push with High priority
+ type: number
+ key:
+ description: Pushover key
+ type: string
+ only_x_prio:
+ description: Only send push for prio mails
+ type: number
+ senders:
+ description: Only send push for emails from these senders
+ type: string
+ senders_regex:
+ description: Regex to match senders for which a push will be send
+ type: string
+ text:
+ description: Custom push noficiation text
+ type: string
+ title:
+ description: Push title
+ type: string
+ token:
+ description: Pushover token
+ type: string
+ type: object
+ items:
+ description: contains list of mailboxes you want to delete
+ type: object
+ type: object
+ summary: Update Pushover settings
+ /api/v1/edit/quarantine_notification:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ description: OK
+ headers: {}
+ tags:
+ - Mailboxes
+ description: You can update one or more mailboxes per request.
+ operationId: Quarantine Notifications
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ quarantine_notification: hourly
+ items:
+ anyOf:
+ - mailbox1@domain.tld
+ - mailbox2@domain.tld
+ properties:
+ attr:
+ properties:
+ quarantine_notification:
+ description: recurrence
+ enum:
+ - hourly
+ - daily
+ - weekly
+ - never
+ type: string
+ type: object
+ items:
+ description: >-
+ contains list of mailboxes you want set qurantine
+ notifications
+ type: object
+ type: object
+ summary: Quarantine Notifications
+ /api/v1/edit/syncjob:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ log:
+ - entity
+ - action
+ - object
+ msg:
+ - message
+ - entity name
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Sync jobs
+ description: >-
+ You can update one or more sync jobs per request. You can also send just
+ attributes you want to change.
+ operationId: Update sync job
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ active: "1"
+ automap: "1"
+ custom_params: ""
+ delete1: "0"
+ delete2: "0"
+ delete2duplicates: "1"
+ enc1: SSL
+ exclude: (?i)spam|(?i)junk
+ host1: imap.server.tld
+ maxage: "0"
+ maxbytespersecond: "0"
+ mins_interval: "20"
+ password1: supersecret
+ port1: "993"
+ skipcrossduplicates: "0"
+ subfolder2: External
+ subscribeall: "1"
+ timeout1: "600"
+ timeout2: "600"
+ user1: username
+ items: "1"
+ properties:
+ attr:
+ properties:
+ active:
+ description: Is sync job active
+ type: boolean
+ automap:
+ description: >-
+ Try to automap folders ("Sent items", "Sent" => "Sent"
+ etc.)
+ type: boolean
+ custom_params:
+ description: Custom parameters passed to imapsync command
+ type: string
+ delete1:
+ description: Delete from source when completed
+ type: boolean
+ delete2:
+ description: Delete messages on destination that are not on source
+ type: boolean
+ delete2duplicates:
+ description: Delete duplicates on destination
+ type: boolean
+ enc1:
+ description: Encryption
+ enum:
+ - TLS
+ - SSL
+ - PLAIN
+ type: string
+ exclude:
+ description: Exclude objects (regex)
+ type: string
+ host1:
+ description: Hostname
+ type: string
+ maxage:
+ description: >-
+ Maximum age of messages in days that will be polled from
+ remote (0 = ignore age)
+ type: number
+ maxbytespersecond:
+ description: Max. bytes per second (0 = unlimited)
+ type: number
+ mins_interval:
+ description: Interval (min)
+ type: number
+ password1:
+ description: Password
+ type: string
+ port1:
+ description: Port
+ type: string
+ skipcrossduplicates:
+ description: >-
+ Skip duplicate messages across folders (first come,
+ first serve)
+ type: boolean
+ subfolder2:
+ description: >-
+ Sync into subfolder on destination (empty = do not use
+ subfolder)
+ type: string
+ subscribeall:
+ description: Subscribe all folders
+ type: boolean
+ timeout1:
+ description: Timeout for connection to remote host
+ type: number
+ timeout2:
+ description: Timeout for connection to local host
+ type: number
+ user1:
+ description: Username
+ type: string
+ type: object
+ items:
+ description: contains list of aliases you want update
+ type: object
+ type: object
+ summary: Update sync job
+ /api/v1/edit/user-acl:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - log:
+ - acl
+ - edit
+ - user
+ - user_acl:
+ - spam_alias
+ - tls_policy
+ - spam_score
+ - spam_policy
+ - delimiter_action
+ - syncjobs
+ - eas_reset
+ - quarantine
+ - sogo_profile_reset
+ - quarantine_attachments
+ - quarantine_notification
+ - app_passwds
+ - pushover
+ username:
+ - info@domain.tld
+ msg:
+ - acl_saved
+ - info@domain.tld
+ type: success
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Mailboxes
+ description: Using this endpoints its possible to update the ACL's for mailboxes
+ operationId: Update mailbox ACL
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ user_acl:
+ - spam_alias
+ - tls_policy
+ - spam_score
+ - spam_policy
+ - delimiter_action
+ - syncjobs
+ - eas_reset
+ - quarantine
+ - sogo_profile_reset
+ - quarantine_attachments
+ - quarantine_notification
+ - app_passwds
+ - pushover
+ items: info@domain.tld
+ properties:
+ attr:
+ properties:
+ user_acl:
+ description: contains a list of active user acls
+ type: object
+ type: object
+ items:
+ description: contains list of mailboxes you want to delete
+ type: object
+ type: object
+ summary: Update mailbox ACL
+ "/api/v1/get/alias/{id}":
+ get:
+ parameters:
+ - description: id of entry you want to get
+ example: all
+ in: path
+ name: id
+ required: true
+ schema:
+ enum:
+ - all
+ - "1"
+ - "2"
+ - "5"
+ - "10"
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ address: alias@domain.tld
+ created: "2019-04-04 19:29:49"
+ domain: domain.tld
+ goto: destination@domain.tld
+ id: 6
+ in_primary_domain: ""
+ is_catch_all: 0
+ modified: null
+ private_comment: null
+ public_comment: null
+ - active: "1"
+ address: "@domain.tld"
+ created: "2019-04-27 13:42:39"
+ domain: domain.tld
+ goto: destination@domain.tld
+ id: 10
+ in_primary_domain: ""
+ is_catch_all: 1
+ modified: null
+ private_comment: null
+ public_comment: null
+ description: OK
+ headers: {}
+ tags:
+ - Aliases
+ description: You can list mailbox aliases existing in system.
+ operationId: Get aliases
+ summary: Get aliases
+ "/api/v1/get/app-passwd/all/{mailbox}":
+ get:
+ parameters:
+ - description: mailbox of entry you want to get
+ example: hello@mailcow.email
+ in: path
+ name: mailbox
+ required: true
+ schema:
+ enum:
+ - hello@mailcow.email
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ created: "2019-12-21 16:04:55"
+ domain: mailcow.email
+ id: 2
+ mailbox: hello@mailcow.email
+ modified: null
+ name: emclient
+ description: OK
+ headers: {}
+ tags:
+ - App Passwords
+ description: >-
+ Using this endpoint you can get all app passwords from a specific
+ mailbox.
+ operationId: Get App Password
+ summary: Get App Password
+ "/api/v1/get/bcc/{id}":
+ get:
+ parameters:
+ - description: id of entry you want to get
+ example: all
+ in: path
+ name: id
+ required: true
+ schema:
+ enum:
+ - all
+ - "1"
+ - "2"
+ - "5"
+ - "10"
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ bcc_dest: bcc@awesomecow.tld
+ created: "2019-10-02 21:44:34"
+ domain: mailcow.tld
+ id: 3
+ local_dest: "@mailcow.tld"
+ modified: null
+ type: sender
+ description: OK
+ headers: {}
+ tags:
+ - Address Rewriting
+ description: Using this endpoint you can get all BCC maps.
+ operationId: Get BCC Map
+ summary: Get BCC Map
+ "/api/v1/get/dkim/{domain}":
+ get:
+ parameters:
+ - description: name of domain
+ in: path
+ name: domain
+ required: true
+ schema:
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ dkim_selector: dkim
+ dkim_txt: >-
+ v=DKIM1;k=rsa;t=s;s=email;p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA21tUSjyasQy/hJmVjPnlRGfzx6TPhYj8mXY9DVOzSAE64Gddw/GnE/GcCR6WXNT23u9q4zPnz1IPoNt5kFOps8vg/iNqrcH++494noaZuYyFPPFnebkfryO4EvEyxC/c66qts+gnOUml+M8uv5WObBJld2gG12jLwFM0263J/N6J8LuUsaXOB2uCIfx8Nf4zjuJ6Ieez2uyHNK5dXjDLfKA4mTr+EEK6W6e34M4KN1liWM6r9Oy5S1FlLrD42VpURxxBZtBiEtaJPEKSQuk6GQz8ihu7W20Yr53tyCdaORu8dhxXVUWVf+GjuuMEdAmQCjYkarXdYCrt56Psw703kwIDAQAB
+ length: "2048"
+ privkey: ""
+ pubkey: >-
+ MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA21tUSjyasQy/hJmVjPnlRGfzx6TPhYj8mXY9DVOzSAE64Gddw/GnE/GcCR6WXNT23u9q4zPnz1IPoNt5kFOps8vg/iNqrcH++494noaZuYyFPPFnebkfryO4EvEyxC/c66qts+gnOUml+M8uv5WObBJld2gG12jLwFM0263J/N6J8LuUsaXOB2uCIfx8Nf4zjuJ6Ieez2uyHNK5dXjDLfKA4mTr+EEK6W6e34M4KN1liWM6r9Oy5S1FlLrD42VpURxxBZtBiEtaJPEKSQuk6GQz8ihu7W20Yr53tyCdaORu8dhxXVUWVf+GjuuMEdAmQCjYkarXdYCrt56Psw703kwIDAQAB
+ description: OK
+ headers: {}
+ tags:
+ - DKIM
+ description: >-
+ Using this endpoint you can get the DKIM public key for a specific
+ domain.
+ operationId: Get DKIM Key
+ summary: Get DKIM Key
+ /api/v1/get/domain-admin/all:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ created: "2019-10-02 10:29:41"
+ selected_domains:
+ - mailcow.tld
+ tfa_active: "0"
+ unselected_domains:
+ - awesomemailcow.de
+ - mailcowisgreat.de
+ username: testadmin
+ description: OK
+ headers: {}
+ tags:
+ - Domain admin
+ description: ""
+ operationId: Get Domain Admins
+ summary: Get Domain Admins
+ "/api/v1/get/domain/{id}":
+ get:
+ parameters:
+ - description: id of entry you want to get
+ example: all
+ in: path
+ name: id
+ required: true
+ schema:
+ enum:
+ - all
+ - mailcow.tld
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ aliases_in_domain: 0
+ aliases_left: 400
+ backupmx: "0"
+ bytes_total: "5076666944"
+ def_new_mailbox_quota: 3221225472
+ def_quota_for_mbox: 3221225472
+ description: Some description
+ domain_name: domain.tld
+ gal: "0"
+ lang: en
+ max_new_mailbox_quota: 10737418240
+ max_num_aliases_for_domain: 400
+ max_num_mboxes_for_domain: 10
+ max_quota_for_domain: 10737418240
+ max_quota_for_mbox: 10737418240
+ mboxes_in_domain: 0
+ mboxes_left: 10
+ msgs_total: "172440"
+ quota_used_in_domain: "0"
+ relay_all_recipients: "0"
+ relayhost: "0"
+ rl: false
+ - active: "1"
+ aliases_in_domain: 0
+ aliases_left: 400
+ backupmx: "1"
+ bytes_total: "5076666944"
+ def_new_mailbox_quota: 3221225472
+ def_quota_for_mbox: 3221225472
+ description: domain description
+ domain_name: domain2.tld
+ gal: "0"
+ lang: cs
+ max_new_mailbox_quota: 10737418240
+ max_num_aliases_for_domain: 400
+ max_num_mboxes_for_domain: 10
+ max_quota_for_domain: 10737418240
+ max_quota_for_mbox: 10737418240
+ mboxes_in_domain: 0
+ mboxes_left: 10
+ msgs_total: "172440"
+ quota_used_in_domain: "0"
+ relay_all_recipients: "0"
+ relayhost: "0"
+ rl: false
+ description: OK
+ headers: {}
+ tags:
+ - Domains
+ description: You can list all domains existing in system.
+ operationId: Get domains
+ summary: Get domains
+ /api/v1/get/fail2ban:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ ban_time: 604800
+ blacklist: |-
+ 45.82.153.37/32
+ 92.118.38.52/32
+ max_attempts: 1
+ netban_ipv4: 32
+ netban_ipv6: 128
+ perm_bans:
+ - 45.82.153.37/32
+ - 92.118.38.52/32
+ retry_window: 7200
+ whitelist: 1.1.1.1
+ description: OK
+ headers: {}
+ tags:
+ - Fail2Ban
+ description: Gets the current Fail2Ban configuration.
+ operationId: Get Fail2Ban Config
+ summary: Get Fail2Ban Config
+ /api/v1/get/fwdhost/all:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - host: 5.1.76.202
+ keep_spam: "yes"
+ source: hosted.mailcow.de
+ - host: "2a00:f820:417::202"
+ keep_spam: "yes"
+ source: hosted.mailcow.de
+ description: OK
+ headers: {}
+ tags:
+ - Fordwarding Hosts
+ description: You can list all Forwarding Hosts in your mailcow.
+ operationId: Get Forwarding Hosts
+ summary: Get Forwarding Hosts
+ "/api/v1/get/logs/acme/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - message: >-
+ Certificate validation done, neither changed nor due for
+ renewal, sleeping for another day.
+ time: "1569927728"
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all ACME logs from issued Lets Enctypts
+ certificates.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get ACME logs
+ summary: Get ACME logs
+ "/api/v1/get/logs/api/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - data: ""
+ method: GET
+ remote: 1.1.1.1
+ time: 1569939001
+ uri: /api/v1/get/logs/api/2
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all Api logs.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get Api logs
+ summary: Get Api logs
+ "/api/v1/get/logs/autodiscover/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - service: activesync
+ time: 1569684212
+ ua: >-
+ Microsoft Office/16.0 (Windows NT 6.2; MAPICPL
+ 16.0.11328; Pro)
+ user: awesome@mailcow.de
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all Autodiscover logs.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get Autodiscover logs
+ summary: Get Autodiscover logs
+ "/api/v1/get/logs/dovecot/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - message: >-
+ managesieve-login: Disconnected (no auth attempts in 0
+ secs): user=<>, rip=172.22.1.3, lip=172.22.1.250
+ priority: info
+ program: dovecot
+ time: "1569938740"
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all Dovecot logs.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get Dovecot logs
+ summary: Get Dovecot logs
+ "/api/v1/get/logs/netfilter/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - message: "Whitelist was changed, it has 1 entries"
+ priority: info
+ time: 1569754911
+ - message: Add host/network 1.1.1.1/32 to blacklist
+ priority: crit
+ time: 1569754911
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all Netfilter logs.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get Netfilter logs
+ summary: Get Netfilter logs
+ "/api/v1/get/logs/postfix/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - message: "EF1711500458: removed"
+ priority: info
+ program: postfix/qmgr
+ time: "1569937433"
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all Postfix logs.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get Postfix logs
+ summary: Get Postfix logs
+ "/api/v1/get/logs/ratelimited/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - from: awesome@mailcow.email
+ header_from: '"Awesome" <awesome@mailcow.email>'
+ header_subject: Mailcow is amazing
+ ip: 172.22.1.248
+ message_id: 6a-5d892500-7-240abd80@90879116
+ qid: E3CF91500458
+ rcpt: hello@mailcow.email
+ rl_hash: RLsdz3tuabozgd4oacbdh8kc78
+ rl_info: mailcow(RLsdz3tuabozgd4oacbdh8kc78)
+ rl_name: mailcow
+ time: 1569269003
+ user: awesome@mailcow.email
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all Ratelimit logs.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get Ratelimit logs
+ summary: Get Ratelimit logs
+ "/api/v1/get/logs/rspamd-history/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all Rspamd logs.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get Rspamd logs
+ summary: Get Rspamd logs
+ "/api/v1/get/logs/sogo/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - message: >-
+ [109]:
+ mailcowdockerized_watchdog-mailcow_1.mailcowdockerized_mailcow-network
+ "GET /SOGo.index/ HTTP/1.1" 200 2531/0 0.005 - - 0
+ priority: notice
+ program: sogod
+ time: "1569938874"
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all SOGo logs.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get SOGo logs
+ summary: Get SOGo logs
+ "/api/v1/get/logs/watchdog/{count}":
+ get:
+ parameters:
+ - description: Number of logs to return
+ in: path
+ name: count
+ required: true
+ schema:
+ type: number
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - hpdiff: "0"
+ hpnow: "1"
+ hptotal: "1"
+ lvl: "100"
+ service: Fail2ban
+ time: "1569938958"
+ - hpdiff: "0"
+ hpnow: "5"
+ hptotal: "5"
+ lvl: "100"
+ service: Rspamd
+ time: "1569938956"
+ description: OK
+ headers: {}
+ tags:
+ - Logs
+ description: >-
+ This Api endpoint lists all Watchdog logs.
+
+ Tip: You can limit how many logs you want to get by using `/<count>` at
+ the end of the api url.
+ operationId: Get Watchdog logs
+ summary: Get Watchdog logs
+ "/api/v1/get/mailbox/{id}":
+ get:
+ parameters:
+ - description: id of entry you want to get
+ example: all
+ in: path
+ name: id
+ required: true
+ schema:
+ enum:
+ - all
+ - user@domain.tld
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ attributes:
+ force_pw_update: "0"
+ mailbox_format: "maildir:"
+ quarantine_notification: never
+ sogo_access: "1"
+ tls_enforce_in: "0"
+ tls_enforce_out: "0"
+ domain: doman3.tld
+ is_relayed: 0
+ local_part: info
+ max_new_quota: 10737418240
+ messages: 0
+ name: Full name
+ percent_class: success
+ percent_in_use: 0
+ quota: 3221225472
+ quota_used: 0
+ rl: false
+ spam_aliases: 0
+ username: info@doman3.tld
+ description: OK
+ headers: {}
+ tags:
+ - Mailboxes
+ description: You can list all mailboxes existing in system.
+ operationId: Get mailboxes
+ summary: Get mailboxes
+ /api/v1/get/mailq/all:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - arrival_time: 1570091234
+ message_size: 1848
+ queue_id: B98C6260CA1
+ queue_name: incoming
+ recipients:
+ - recipient@awesomecow.tld
+ sender: sender@mailcow.tld
+ description: OK
+ headers: {}
+ tags:
+ - Queue Manager
+ description: Get the current mail queue and everything it contains.
+ operationId: Get Queue
+ summary: Get Queue
+ "/api/v1/get/oauth2-client/{id}":
+ get:
+ parameters:
+ - description: id of entry you want to get
+ example: all
+ in: path
+ name: id
+ required: true
+ schema:
+ enum:
+ - all
+ - "1"
+ - "2"
+ - "5"
+ - "10"
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - client_id: 17c76aaa88c0
+ client_secret: 73fc668a88147e32a31ff80c
+ grant_types: null
+ id: 1
+ redirect_uri: "https://mailcow.tld"
+ scope: profile
+ user_id: null
+ description: OK
+ headers: {}
+ tags:
+ - oAuth Clients
+ description: Using this endpoint you can get all oAuth clients.
+ operationId: Get oAuth Clients
+ summary: Get oAuth Clients
+ "/api/v1/get/policy_bl_domain/{domain}":
+ get:
+ parameters:
+ - description: name of domain
+ in: path
+ name: domain
+ required: true
+ schema:
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - object: domain.tld
+ prefid: 2
+ value: "*@baddomain.tld"
+ description: OK
+ headers: {}
+ tags:
+ - Domain antispam policies
+ description: You can list all blacklist policies per domain.
+ operationId: List blacklist domain policy
+ summary: List blacklist domain policy
+ "/api/v1/get/policy_wl_domain/{domain}":
+ get:
+ parameters:
+ - description: name of domain
+ in: path
+ name: domain
+ required: true
+ schema:
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - object: domain.tld
+ prefid: 1
+ value: "*@gooddomain.tld"
+ description: OK
+ headers: {}
+ tags:
+ - Domain antispam policies
+ description: You can list all whitelist policies per domain.
+ operationId: List whitelist domain policy
+ summary: List whitelist domain policy
+ /api/v1/get/quarantine/all:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ created: 1572688831
+ id: 33
+ notified: 1
+ qid: 8224615004C1
+ rcpt: admin@domain.tld
+ score: 15.48
+ sender: bounces@send.domain.tld
+ subject: mailcow is awesome
+ virus_flag: 0
+ description: OK
+ headers: {}
+ tags:
+ - Quarantine
+ description: Get all mails that are currently in Quarantine.
+ operationId: Get mails in Quarantine
+ summary: Get mails in Quarantine
+ "/api/v1/get/recipient_map/{id}":
+ get:
+ parameters:
+ - description: id of entry you want to get
+ example: all
+ in: path
+ name: id
+ required: true
+ schema:
+ enum:
+ - all
+ - "1"
+ - "2"
+ - "5"
+ - "10"
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ created: "2019-10-02 22:06:29"
+ id: 3
+ modified: null
+ recipient_map_new: target@mailcow.tld
+ recipient_map_old: recipient@mailcow.tld
+ description: OK
+ headers: {}
+ tags:
+ - Address Rewriting
+ description: Using this endpoint you can get all recipient maps.
+ operationId: Get Recipient Map
+ summary: Get Recipient Map
+ "/api/v1/get/relayhost/{id}":
+ get:
+ parameters:
+ - description: id of entry you want to get
+ example: all
+ in: path
+ name: id
+ required: true
+ schema:
+ enum:
+ - all
+ - "1"
+ - "2"
+ - "5"
+ - "10"
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ hostname: "mailcow.tld:25"
+ id: 1
+ password: supersecurepassword
+ password_short: tes...
+ used_by_domains: ""
+ username: testuser
+ description: OK
+ headers: {}
+ tags:
+ - Routing
+ description: Using this endpoint you can get all Sender-Dependent Transports.
+ operationId: Get Sender-Dependent Transports
+ summary: Get Sender-Dependent Transports
+ /api/v1/get/resource/all:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ description: test
+ domain: mailcow.tld
+ kind: location
+ local_part: test
+ multiple_bookings: 0
+ name: test@mailcow.tld
+ description: OK
+ headers: {}
+ tags:
+ - Resources
+ description: Using this endpoint you can get all Resources.
+ operationId: Get Resources
+ summary: Get Resources
+ "/api/v1/get/rl-mbox/{mailbox}":
+ get:
+ parameters:
+ - description: name of mailbox or all
+ in: path
+ name: mailbox
+ required: true
+ schema:
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - frame: s
+ mailbox: leon@mailcow.tld
+ value: "5"
+ - frame: s
+ mailbox: lisa@mailcow.tld
+ value: "3"
+ description: OK
+ headers: {}
+ tags:
+ - Ratelimits
+ description: >-
+ Using this endpoint you can get the ratelimits for a certain mailbox.
+ You can use all for all mailboxes.
+ operationId: Get mailbox ratelimits
+ summary: Get mailbox ratelimits
+ "/api/v1/get/rl-domain/{domain}":
+ get:
+ parameters:
+ - description: name of domain or all
+ in: path
+ name: domain
+ required: true
+ schema:
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - frame: s
+ domain: domain.tld
+ value: "5"
+ - frame: s
+ mailbox: domain2.tld
+ value: "3"
+ description: OK
+ headers: {}
+ tags:
+ - Ratelimits
+ description: >-
+ Using this endpoint you can get the ratelimits for a certain domains.
+ You can use all for all domain.
+ operationId: Get domain ratelimits
+ summary: Get domain ratelimits
+ /api/v1/edit/rl-mbox/:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - type: success
+ log:
+ - ratelimit
+ - edit
+ - mailbox
+ - object:
+ - info@domain.tld
+ rl_value: "10"
+ rl_frame: h
+ msg:
+ - rl_saved
+ - info@domain.tld
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Ratelimits
+ description: >-
+ Using this endpoint you can edit the ratelimits for a certain mailbox.
+ operationId: Edit mailbox ratelimits
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ rl_vlaue: "10"
+ rl_frame: "h"
+ items:
+ - info@domain.tld
+ properties:
+ attr:
+ properties:
+ rl_frame:
+ description: contains the frame for the ratelimit h,s,m
+ type: string
+ rl_vlaue:
+ description: contains the rate for the ratelimit 10,20,50,1
+ type: number
+ type: object
+ items:
+ description: contains list of mailboxes you want to edit the ratelimit of
+ type: object
+ type: object
+ summary: Edit mailbox ratelimits
+ /api/v1/edit/rl-domain/:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - type: success
+ - log:
+ - ratelimit
+ - edit
+ - domain
+ - object:
+ - domain.tld
+ rl_value: "50"
+ rl_frame: "h"
+ msg:
+ - rl_saved
+ - domain.tld
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Ratelimits
+ description: >-
+ Using this endpoint you can edit the ratelimits for a certain domains.
+ operationId: Edit domain ratelimits
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ attr:
+ rl_vlaue: "10"
+ rl_frame: "h"
+ items:
+ - domain.tld
+ properties:
+ attr:
+ properties:
+ rl_frame:
+ description: contains the frame for the ratelimit h,s,m
+ type: string
+ rl_vlaue:
+ description: contains the rate for the ratelimit 10,20,50,1
+ type: number
+ type: object
+ items:
+ description: contains list of domains you want to edit the ratelimit of
+ type: object
+ type: object
+ summary: Edit domain ratelimits
+ /api/v1/get/status/containers:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ acme-mailcow:
+ container: acme-mailcow
+ image: "mailcow/acme:1.63"
+ started_at: "2019-12-22T21:00:08.270660275Z"
+ state: running
+ type: info
+ clamd-mailcow:
+ container: clamd-mailcow
+ image: "mailcow/clamd:1.35"
+ started_at: "2019-12-22T21:00:01.622856172Z"
+ state: running
+ type: info
+ dockerapi-mailcow:
+ container: dockerapi-mailcow
+ image: "mailcow/dockerapi:1.36"
+ started_at: "2019-12-22T20:59:59.984797808Z"
+ state: running
+ type: info
+ dovecot-mailcow:
+ container: dovecot-mailcow
+ image: "mailcow/dovecot:1.104"
+ started_at: "2019-12-22T21:00:08.988680259Z"
+ state: running
+ type: info
+ ipv6nat-mailcow:
+ container: ipv6nat-mailcow
+ image: robbertkl/ipv6nat
+ started_at: "2019-12-22T21:06:37.273225445Z"
+ state: running
+ type: info
+ memcached-mailcow:
+ container: memcached-mailcow
+ image: "memcached:alpine"
+ started_at: "2019-12-22T20:59:58.0907785Z"
+ state: running
+ type: info
+ mysql-mailcow:
+ container: mysql-mailcow
+ image: "mariadb:10.3"
+ started_at: "2019-12-22T21:00:02.201937528Z"
+ state: running
+ type: info
+ netfilter-mailcow:
+ container: netfilter-mailcow
+ image: "mailcow/netfilter:1.31"
+ started_at: "2019-12-22T21:00:09.851559297Z"
+ state: running
+ type: info
+ nginx-mailcow:
+ container: nginx-mailcow
+ image: "nginx:mainline-alpine"
+ started_at: "2019-12-22T21:00:12.9843038Z"
+ state: running
+ type: info
+ olefy-mailcow:
+ container: olefy-mailcow
+ image: "mailcow/olefy:1.2"
+ started_at: "2019-12-22T20:59:59.676259274Z"
+ state: running
+ type: info
+ php-fpm-mailcow:
+ container: php-fpm-mailcow
+ image: "mailcow/phpfpm:1.55"
+ started_at: "2019-12-22T21:00:00.955808957Z"
+ state: running
+ type: info
+ postfix-mailcow:
+ container: postfix-mailcow
+ image: "mailcow/postfix:1.44"
+ started_at: "2019-12-22T21:00:07.186717617Z"
+ state: running
+ type: info
+ redis-mailcow:
+ container: redis-mailcow
+ image: "redis:5-alpine"
+ started_at: "2019-12-22T20:59:56.827166834Z"
+ state: running
+ type: info
+ rspamd-mailcow:
+ container: rspamd-mailcow
+ image: "mailcow/rspamd:1.56"
+ started_at: "2019-12-22T21:00:12.456075355Z"
+ state: running
+ type: info
+ sogo-mailcow:
+ container: sogo-mailcow
+ image: "mailcow/sogo:1.65"
+ started_at: "2019-12-22T20:59:58.382274592Z"
+ state: running
+ type: info
+ solr-mailcow:
+ container: solr-mailcow
+ image: "mailcow/solr:1.7"
+ started_at: "2019-12-22T20:59:59.635413798Z"
+ state: running
+ type: info
+ unbound-mailcow:
+ container: unbound-mailcow
+ image: "mailcow/unbound:1.10"
+ started_at: "2019-12-22T20:59:58.760595825Z"
+ state: running
+ type: info
+ watchdog-mailcow:
+ container: watchdog-mailcow
+ image: "mailcow/watchdog:1.65"
+ started_at: "2019-12-22T20:59:56.028660382Z"
+ state: running
+ type: info
+ description: OK
+ headers: {}
+ tags:
+ - Status
+ description: >-
+ Using this endpoint you can get the status of all containers and when
+ hey where started and a few other details.
+ operationId: Get container status
+ summary: Get container status
+ /api/v1/get/status/solr:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ solr_documents: null
+ solr_enabled: false
+ solr_size: null
+ type: info
+ description: OK
+ headers: {}
+ tags:
+ - Status
+ description: >-
+ Using this endpoint you can get the status of all containers and when
+ hey where started and a few other details.
+ operationId: Get solr status
+ summary: Get solr status
+ /api/v1/get/status/vmail:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ disk: /dev/mapper/mail--vg-root
+ total: 41G
+ type: info
+ used: 11G
+ used_percent: 28%
+ description: OK
+ headers: {}
+ tags:
+ - Status
+ description: >-
+ Using this endpoint you can get the status of the vmail and the amount
+ of used storage.
+ operationId: Get vmail status
+ summary: Get vmail status
+ /api/v1/get/syncjobs/all/no_log:
+ get:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ authmd51: 0
+ authmech1: PLAIN
+ automap: 1
+ created: "2019-05-22 11:37:25"
+ custom_params: ""
+ delete1: 0
+ delete2: 0
+ delete2duplicates: 1
+ domain2: ""
+ enc1: TLS
+ exclude: (?i)spam|(?i)junk
+ host1: imap.server.tld
+ id: 1
+ is_running: 0
+ last_run: "2019-05-22 11:40:02"
+ log: ""
+ maxage: 0
+ maxbytespersecond: "0"
+ mins_interval: "20"
+ modified: "2019-05-22 11:40:02"
+ port1: 993
+ regextrans2: ""
+ skipcrossduplicates: 0
+ subfolder2: External
+ subscribeall: 1
+ timeout1: 600
+ timeout2: 600
+ user1: username
+ user2: mailbox@domain.tld
+ description: OK
+ headers: {}
+ tags:
+ - Sync jobs
+ description: You can list all syn jobs existing in system.
+ operationId: Get sync jobs
+ summary: Get sync jobs
+ "/api/v1/get/tls-policy-map/{id}":
+ get:
+ parameters:
+ - description: id of entry you want to get
+ example: all
+ in: path
+ name: id
+ required: true
+ schema:
+ enum:
+ - all
+ - "1"
+ - "2"
+ - "5"
+ - "10"
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - parameters: ""
+ active: "1"
+ created: "2019-10-03 08:42:12"
+ dest: mailcow.tld
+ id: 1
+ modified: null
+ policy: encrypt
+ description: OK
+ headers: {}
+ tags:
+ - Outgoing TLS Policy Map Overrides
+ description: Using this endpoint you can get all TLS policy map override maps.
+ operationId: Get TLS Policy Map
+ summary: Get TLS Policy Map
+ "/api/v1/get/transport/{id}":
+ get:
+ parameters:
+ - description: id of entry you want to get
+ example: all
+ in: path
+ name: id
+ required: true
+ schema:
+ enum:
+ - all
+ - "1"
+ - "2"
+ - "5"
+ - "10"
+ type: string
+ - description: e.g. api-key-string
+ example: api-key-string
+ in: header
+ name: X-API-Key
+ required: false
+ schema:
+ type: string
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - active: "1"
+ destination: example.org
+ id: 1
+ lookup_mx: "0"
+ nexthop: "host:25"
+ password: supersecurepw
+ password_short: sup...
+ username: testuser
+ description: OK
+ headers: {}
+ tags:
+ - Routing
+ description: Using this endpoint you can get all Transport Maps.
+ operationId: Get Transport Maps
+ summary: Get Transport Maps
+ /api/v1/edit/spam-score/:
+ post:
+ responses:
+ "401":
+ $ref: "#/components/responses/Unauthorized"
+ "200":
+ content:
+ application/json:
+ examples:
+ response:
+ value:
+ - type: success
+ log:
+ - mailbox
+ - edit
+ - spam_score
+ - username:
+ - info@domain.tld
+ spam_score: "8,15"
+ msg:
+ - mailbox_modified
+ - info@domain.tld
+ schema:
+ properties:
+ log:
+ description: contains request object
+ items: {}
+ type: array
+ msg:
+ items: {}
+ type: array
+ type:
+ enum:
+ - success
+ - danger
+ - error
+ type: string
+ type: object
+ description: OK
+ headers: {}
+ tags:
+ - Mailboxes
+ description: >-
+ Using this endpoint you can edit the spam filter score for a certain mailbox.
+ operationId: Edit mailbox spam filter score
+ requestBody:
+ content:
+ application/json:
+ schema:
+ example:
+ - items:
+ - info@domain.tld
+ attr:
+ spam_score: "8,15"
+ summary: Edit mailbox spam filter score
+
+tags:
+ - name: Domains
+ description: You can create antispam whitelist and blacklist policies
+ - name: Domain antispam policies
+ description: You can edit the Domain Antispam policies
+ - name: Mailboxes
+ description: You can manage mailboxes
+ - name: Aliases
+ description: You can manage aliases
+ - name: Sync jobs
+ description: Using Syncjobs you can sync your mails with other email servers
+ - name: Fordwarding Hosts
+ description: Forwarding Hosts enable you to send mail using a relay
+ - name: Logs
+ description: Get all mailcow system logs
+ - name: Queue Manager
+ description: Manage the postfix mail queue
+ - name: Quarantine
+ description: Check what emails went to quarantine
+ - name: Fail2Ban
+ description: Manage the Netfilter fail2ban options
+ - name: DKIM
+ description: Manage DKIM keys
+ - name: Domain admin
+ description: Create or udpdate domain admin users
+ - name: Address Rewriting
+ description: Create BCC maps or recipient maps
+ - name: Outgoing TLS Policy Map Overrides
+ description: Force global TLS policys
+ - name: oAuth Clients
+ description: Use mailcow as a oAuth server
+ - name: Routing
+ description: Define your own email routes
+ - name: Resources
+ description: Manage ressources
+ - name: App Passwords
+ description: Create mailbox app passwords
+ - name: Status
+ description: Get the status of your cow
+ - name: Ratelimits
+ description: Edit domain ratelimits