Description
Use this API to update the Exim Mail Server configuration in Webuzo.
Parameters
Required Parameter
General Settings
Mail Configuration
RBL
Security
SpamAssassin
Sample Code
curl --insecure -u "WEBUZO_USER:WEBUZO_PASS" -X POST "https://WEBUZO_SERVER_IP:2005/index.php?api=json&act=mail_settings" -d "save_basic_options=Save" -d "default_quota=0" -d "systemfilter_control=1" -d "suspended_account_deliveries=queue" -d "exim_primary_hostname=custom" -d "exim_primary_hostname_val=mail.example.com" -d "max_hourly_email=custom" -d "max_hourly_email_val=200" -d "enable_roundcube=1"<?php
// Webuzo API Credentials
$user = 'WEBUZO_USER'; // Your Webuzo Username
$pass = 'WEBUZO_PASS'; // Your Webuzo Password
$ip = 'WEBUZO_SERVER_IP'; // Server IP or Hostname
$url = 'https://' . rawurlencode($user) . ':' . rawurlencode($pass) . '@' . $ip . ':2005/index.php?api=json&act=mail_settings';
// POST Data
$post = array(
// REQUIRED: Trigger to save settings
'save_basic_options' => 'Save',
'default_quota' => '1', // 0 = Unlimited, 1 = User Defined
'systemfilter_control' => '1', // 1 = Default, 0 = None, 2 = Custom
'suspended_account_deliveries' => 'deliver',// deliver, discard, block, queue
// General Settings
'exim_primary_hostname' => 'custom',
'exim_primary_hostname_val' => 'mail.example.com',
'max_hourly_email' => 'custom',
'max_hourly_email_val' => '40',
'max_notify_email' => 'custom',
'max_notify_email_val' => '40',
'mail_retry' => 'custom',
'mail_retry_val' => '15',
'enable_roundcube' => '1',
'default_quota_val' => '1024', // Value if default_quota is 1
// Webmail Ports
'webmail_port_ssl' => 'custom',
'webmail_port_ssl_val' => '2096',
'webmail_port_nonssl' => 'custom',
'webmail_port_nonssl_val' => '2095',
// Limits & timeouts
'message_linelength_limit' => 'custom',
'message_linelength_limit_val' => '2048',
'message_size_limit' => 'custom',
'message_size_limit_val' => '50',
'max_smtp_conn_accept' => 'custom',
'max_smtp_conn_accept_val' => '500',
'deliver_queue_load_max' => 'custom',
'deliver_queue_load_max_val' => '12',
'queue_only_load' => 'custom',
'queue_only_load_val' => '24',
// Ports
'daemon_smtp_ports' => 'custom',
'daemon_smtp_ports_val' => '25 : 465 : 587',
'tls_on_connect_ports' => 'custom',
'tls_on_connect_ports_val' => '465',
// Logs & DKIM
'log_selector' => 'custom',
'log_selector_val' => '+subject +arguments +received_recipients',
'dkim_selector' => 'default',
'dkim_selector_val' => '',
// Filters & SpamAssassin Limits
'systemfilter_control_val' => '/etc/exim/exim_system_filter',
'spam_thresold' => 'unlimited',
'ratelimit_spam_score_over_int_control' => 'unlimited',
'fail_spam_score_over_int_control' => 'unlimited',
'spam_header_control' => '***SPAM***',
'spam_header_control_val' => '***SPAM***',
'max_spam_scan_size_control' => '1000',
// Access Lists (Empty strings clear the lists)
'spammeripblocks' => '',
'senderverifybypasshosts' => '',
'mostlytrustedmailhosts' => '',
'skipsmtpcheckhosts' => '',
'backupmxhosts' => '',
'trustedmailusers' => '',
'rbl_whitelist' => '',
// Security Options
'openssl_options_control' => '+no_sslv2 +no_sslv3 +no_tlsv1 +no_tlsv1_1',
'openssl_options_control_val' => '+no_sslv2 +no_sslv3 +no_tlsv1 +no_tlsv1_1',
'tls_require_ciphers_control' => 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384',
'tls_require_ciphers_control_val' => 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384',
);
// Initialize cURL
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE); // Skip SSL verification
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, FALSE);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($post));
// Execute Request
$resp = curl_exec($ch);
if(curl_error($ch)){
die('Curl Error: '.curl_error($ch));
}
curl_close($ch);
// Decode Response
$res = json_decode($resp, true);
// Check Result
if(!empty($res['done'])){
echo "Success: Mail settings updated.\n";
print_r($res['done']);
} else {
echo "Error updating settings:\n";
print_r($res['error']);
}Output
Setting Saved