| 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 |
| sogo_visible: |
| description: toggle visibility as selectable sender in SOGo |
| type: boolean |
| type: object |
| summary: Create alias |
| /api/v1/add/time_limited_alias: |
| post: |
| responses: |
| "401": |
| $ref: "#/components/responses/Unauthorized" |
| "200": |
| content: |
| application/json: |
| examples: |
| response: |
| value: |
| - log: |
| - mailbox |
| - add |
| - time_limited_alias |
| - address: info@domain.tld |
| domain: 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: |
| - Aliases |
| description: >- |
| You may create a time limited alias using this action. It takes a JSON |
| object containing a domain and mailbox informations. |
| Mailcow will generate a random alias. |
| operationId: Create time limited alias |
| requestBody: |
| content: |
| application/json: |
| schema: |
| example: |
| username: info@domain.tld |
| domain: domain.tld |
| properties: |
| username: |
| description: 'the mailbox an alias should be created for' |
| type: string |
| domain: |
| description: "the domain" |
| type: string |
| type: object |
| summary: Create time limited 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" |
| username: info@domain.tld |
| app_name: wordpress |
| app_passwd: keyleudecticidechothistishownsan31 |
| app_passwd2: keyleudecticidechothistishownsan31 |
| protocols: |
| - imap_access |
| - dav_access |
| - smtp_access |
| - eas_access |
| - pop3_access |
| - sieve_access |
| 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 |
| protocols: |
| - imap_access |
| - dav_access |
| - smtp_access |
| - eas_access |
| - pop3_access |
| - sieve_access |
| 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" |
| restart_sogo: "1" |
| backupmx: "0" |
| defquota: "3072" |
| description: some decsription |
| domain: domain.tld |
| mailboxes: "10" |
| maxquota: "10240" |
| quota: "10240" |
| relay_all_recipients: "0" |
| rl_frame: s |
| rl_value: "10" |
| tags: ["tag1", "tag2"] |
| - null |
| msg: |
| - domain_added |
| - domain.tld |
| type: success |
| schema: |
| type: array |
| items: |
| type: object |
| properties: |
| log: |
| description: contains request object |
| items: {} |
| type: array |
| msg: |
| items: {} |
| type: array |
| type: |
| enum: |
| - success |
| - danger |
| - error |
| type: string |
| 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 |
| mailboxes: "10" |
| maxquota: "10240" |
| quota: "10240" |
| relay_all_recipients: "0" |
| rl_frame: s |
| rl_value: "10" |
| restart_sogo: "10" |
| tags: ["tag1", "tag2"] |
| 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 |
| gal: |
| description: >- |
| is domain global address list active or not, it enables |
| shared contacts accross domain in SOGo webmail |
| type: boolean |
| 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 |
| restart_sogo: |
| description: restart SOGo to activate the domain in SOGo |
| type: number |
| relay_all_recipients: |
| description: >- |
| if not, them you have to create "dummy" mailbox for each |
| address to relay |
| type: boolean |
| relay_unknown_only: |
| description: Relay non-existing mailboxes only. Existing mailboxes will be delivered locally. |
| type: boolean |
| rl_frame: |
| enum: |
| - s |
| - m |
| - h |
| - d |
| type: string |
| rl_value: |
| description: rate limit value |
| type: number |
| tags: |
| description: tags for this Domain |
| type: array |
| items: |
| type: string |
| 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" |
| tags: ["tag1", "tag2"] |
| - 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" |
| tags: ["tag1", "tag2"] |
| 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 |
| password: |
| 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: |
| 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: |
| type: array |
| items: |
| type: object |
| properties: |
| log: |
| description: contains request object |
| items: {} |
| type: array |
| msg: |
| items: {} |
| type: array |
| type: |
| enum: |
| - success |
| - danger |
| - error |
| type: string |
| description: OK |
| headers: {} |
| tags: |
| - Domains |
| description: You can delete one or more domains. |
| operationId: Delete domain |
| requestBody: |
| content: |
| application/json: |
| schema: |
| type: object |
| example: |
| - domain.tld |
| - domain2.tld |
| properties: |
| items: |
| type: array |
| items: |
| type: string |
| 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/delete/mailbox/tag/{mailbox}": |
| post: |
| parameters: |
| - description: name of mailbox |
| in: path |
| name: mailbox |
| example: info@domain.tld |
| required: true |
| schema: |
| type: string |
| responses: |
| "401": |
| $ref: "#/components/responses/Unauthorized" |
| "200": |
| content: |
| application/json: |
| examples: |
| response: |
| value: |
| - log: |
| - mailbox |
| - delete |
| - tags_mailbox |
| - tags: |
| - tag1 |
| - tag2 |
| mailbox: 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 delete one or more mailbox tags. |
| operationId: Delete mailbox tags |
| requestBody: |
| content: |
| application/json: |
| schema: |
| example: |
| - tag1 |
| - tag2 |
| properties: |
| items: |
| description: contains list of mailboxes you want to delete |
| type: object |
| type: object |
| summary: Delete mailbox tags |
| "/api/v1/delete/domain/tag/{domain}": |
| post: |
| parameters: |
| - description: name of domain |
| in: path |
| name: domain |
| example: domain.tld |
| required: true |
| schema: |
| type: string |
| responses: |
| "401": |
| $ref: "#/components/responses/Unauthorized" |
| "200": |
| content: |
| application/json: |
| examples: |
| response: |
| value: |
| - log: |
| - mailbox |
| - delete |
| - tags_domain |
| - tags: |
| - tag1 |
| - tag2 |
| domain: domain.tld |
| - null |
| 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: |
| - Domains |
| description: You can delete one or more domain tags. |
| operationId: Delete domain tags |
| requestBody: |
| content: |
| application/json: |
| schema: |
| example: |
| - tag1 |
| - tag2 |
| properties: |
| items: |
| description: contains list of domains you want to delete |
| type: object |
| type: object |
| summary: Delete domain tags |
| /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 |
| sogo_visible: |
| description: toggle visibility as selectable sender in SOGo |
| type: boolean |
| 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: |
| application/json: |
| schema: |
| type: array |
| items: |
| type: object |
| properties: |
| log: |
| type: array |
| description: contains request object |
| items: {} |
| msg: |
| type: array |
| items: {} |
| type: |
| enum: |
| - success |
| - danger |
| - error |
| type: string |
| 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" |
| mailboxes: "10" |
| maxquota: "10240" |
| quota: "10240" |
| relay_all_recipients: "0" |
| relayhost: "2" |
| tags: ["tag3", "tag4"] |
| 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 |
| 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 |
| relay_unknown_only: |
| description: Relay non-existing mailboxes only. Existing mailboxes will be delivered locally. |
| type: boolean |
| relayhost: |
| description: id of relayhost |
| type: number |
| rl_frame: |
| enum: |
| - s |
| - m |
| - h |
| - d |
| type: string |
| rl_value: |
| description: rate limit value |
| type: number |
| tags: |
| description: tags for this Domain |
| type: array |
| items: |
| type: string |
| type: object |
| items: |
| description: contains list of domain names you want update |
| type: array |
| items: |
| type: string |
| 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 |
| tags: ["tag3", "tag4"] |
| - 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" |
| tags: ["tag3", "tag4"] |
| 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 |
| password: |
| 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" |
| sound: "pushover" |
| 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" |
| sound: "pushover" |
| 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 |
| sound: |
| description: Set notification sound |
| type: string |
| 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/time_limited_aliases/{mailbox}": |
| get: |
| parameters: |
| - description: mailbox you want to get aliasses from |
| example: domain.tld |
| in: path |
| schema: |
| type: string |
| name: mailbox |
| required: true |
| - 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: |
| - address: alias@domain.tld |
| goto: destination@domain.tld |
| validity: 1668251246 |
| created: "2021-11-12 12:07:26" |
| modified: null |
| description: OK |
| headers: {} |
| tags: |
| - Aliases |
| description: You can list time limited mailbox aliases existing in system. |
| operationId: Get time limited aliases |
| summary: Get time limited 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: comma seperated list of tags to filter by |
| example: "tag1,tag2" |
| in: query |
| name: tags |
| required: false |
| 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: |
| - 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" |
| 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 |
| tags: ["tag1", "tag2"] |
| - 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" |
| 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 |
| tags: ["tag3", "tag4"] |
| 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: comma seperated list of tags to filter by |
| example: "tag1,tag2" |
| in: query |
| name: tags |
| required: false |
| 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: |
| - 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 |
| tags: ["tag1", "tag2"] |
| 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_value: "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_value: |
| 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_value: "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_value: |
| 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/status/version: |
| get: |
| responses: |
| "401": |
| $ref: "#/components/responses/Unauthorized" |
| "200": |
| content: |
| application/json: |
| examples: |
| response: |
| value: |
| version: "2022-04" |
| description: OK |
| headers: {} |
| tags: |
| - Status |
| description: >- |
| Using this endpoint you can get the current running release of this |
| instance. |
| operationId: Get version status |
| summary: Get version 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 |
| "/api/v1/get/mailbox/all/{domain}": |
| get: |
| parameters: |
| - description: name of domain |
| in: path |
| name: domain |
| required: false |
| 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: |
| - 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: domain3.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@domain3.tld |
| tags: ["tag1", "tag2"] |
| description: OK |
| headers: {} |
| tags: |
| - Mailboxes |
| description: You can list all mailboxes existing in system for a specific domain. |
| operationId: Get mailboxes of a domain |
| summary: Get mailboxes of a domain |
| |
| 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 |