Postfix
Очередная статья из цикла «для себя».
Поскольку количество проектов на сервере все больше (хоть пока и не приносящих прибыли), настало время наладить работу почтовой системы.
Дано: FreeBSD 7.2-RELEASE.
Начитавшись гугля, выбрал Postfix+Dovecot+MySql+PostfixAdmin+RoundCube.
Рекомендаций море, много из них разных. Два дня мучений, настроек по разным мануалам ничего не дали. Авторизация по imap, pop проходила, а доставка почты не работала. Вывод достаточно прост: нельзя действовать прямо по мануалам, нужно включать мозг.
Дело нелегкое, почти забытое. Удаляю все конфиги, начинаю все с начала. Иду на сайт Dovecot`a и делаю согласно рекомендаций, учитывая реалии.
Настраиваем Dovecot:
собираем:
[X] KQUEUE kqueue(2) support
[X] SSL SSL support
[X] POP3 POP3 support
[X] MYSQL MySQL support
dovecot.conf
## Dovecot configuration file
# Base directory where to store runtime data.
base_dir = /var/run/dovecot/
# Protocols we want to be serving: imap imaps pop3 pop3s
# If you only want to use dovecot-auth, you can set this to "none".
protocols = imap pop3
disable_plaintext_auth = no
# Log file to use for error messages, instead of sending them to syslog.
# /dev/stderr can be used to log into stderr.
log_path = /var/log/dovecot
# Log file to use for informational and debug messages.
# Default is the same as log_path.
info_log_path = /var/log/dovecot_inf
# Prefix for each line written to log file. % codes are in strftime(3)
# format.
log_timestamp = "%b %d %H:%M:%S "
# SSL/TLS support: yes, no, required. <doc/wiki/SSL.txt>
ssl = no
# SSL ciphers to use
#ssl_cipher_list = ALL:!LOW:!SSLv2
# Show protocol level SSL errors.
#verbose_ssl = no
##
## Login processes
##
# <doc/wiki/LoginProcess.txt>
rything in this directory is deleted when Dovecot is started.
#login_processes_count = 3
#login_max_connections = 256
# Greeting message for clients.
login_greeting = Dovecot ready.
# Login log format. %$ contains login_log_format_elements string, %s contains
# the data we want to log.
login_log_format = %$: %s
# There are a few special variables you can use, eg.:
#
# %u - username
# %n - user part in user@domain, same as %u if there's no domain
# %d - domain part in user@domain, empty if there's no domain
# %h - home directory
#
# See <doc/wiki/Variables.txt> for full list. Some examples:
# ==================mail location ========================
mail_location = maildir:/home/vmail/%d/%n
mail_privileged_group = mail
mail_debug = yes
mail_log_prefix = "%Us(%u): "
mail_log_max_lines_per_sec = 10
dotlock_use_excl = yes
verbose_proctitle = yes
first_valid_gid = 6
last_valid_gid = 65534
maildir_copy_with_hardlinks = yes
protocol imap {
#login_greeting_capability = yes
# Login executable location.
login_executable = /usr/local/libexec/dovecot/imap-login
#
mail_executable = /usr/local/libexec/dovecot/imap
mail_plugins = quota imap_quota trash
mail_plugin_dir = /usr/local/lib/dovecot/imap
imap_client_workarounds = delay-newmail netscape-eoh tb-extra-mailbox-sep
}
##
## POP3 specific settings
##
protocol pop3 {
pop3_uidl_format = %08Xu%08Xv
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh
}
##
## LDA specific settings
##
protocol lda {
# Address to use when sending rejection mails.
postmaster_address = one.dreamw@gmail.com
# Hostname to use in various parts of sent mails, eg. in Message-Id.
# Default is the system's real hostname.
#hostname =
# Support for dynamically loadable plugins. mail_plugins is a space separated
# list of plugins to load.
#mail_plugins =
#mail_plugin_dir = /usr/local/lib/dovecot/lda
# If user is over quota, return with temporary failure instead of
# bouncing the mail.
#quota_full_tempfail = no
# Format to use for logging mail deliveries. You can use variables:
# %$ - Delivery status message (e.g. "saved to INBOX")
# %m - Message-ID
# %s - Subject
# %f - From address
deliver_log_format = msgid=%m: %$
# Binary to use for sending mails.
sendmail_path = /usr/sbin/sendmail
# Subject: header to use for rejection mails. You can use the same variables
# as for rejection_reason below.
rejection_subject = Rejected: %s
# Human readable error message for rejection mails. You can use variables:
# %n = CRLF, %r = reason, %s = original subject, %t = recipient
rejection_reason = Your message to <%t> was automatically rejected:%n%r
# UNIX socket path to master authentication server to find users.
# auth_socket_path = /var/run/dovecot/auth-master
}
auth_executable = /usr/local/libexec/dovecot/dovecot-auth
auth_username_format = %Lu
auth_verbose = yes
auth_debug = yes
auth_debug_passwords = yes
auth default {
# Space separated list of wanted authentication mechanisms:
# plain login digest-md5 cram-md5 ntlm rpa apop anonymous gssapi otp skey
# gss-spnego
# NOTE: See also disable_plaintext_auth setting.
mechanisms = plain login
passdb sql {
# Path for SQL configuration file.
# See /usr/local/share/examples/dovecot/dovecot-sql.conf
#args = /usr/local/etc/dovecot-sql.conf
args = /usr/local/etc/dovecot-sql.conf
}
userdb passwd {
args = blocking=no
}
# SQL database <doc/wiki/AuthDatabase.SQL.txt>
userdb sql {
# Path for SQL configuration file.
# See /usr/local/share/examples/dovecot/dovecot-sql.conf
args = /usr/local/etc/dovecot-sql.conf
}
user = nobody
socket listen {
master {
# Master socket provides access to userdb information. It's typically
# used to give Dovecot's local delivery agent access to userdb so it
# can find mailbox locations.
path = /var/run/dovecot/auth-master
mode = 0600
# Default user/group is the one who started dovecot-auth (root)
user = vmail
group = mail
}
client {
path = /var/spool/postfix/private/auth
mode = 0660
user = postfix
group = postfix
}
}
}
dict {
#quota = mysql:/usr/local/etc/dovecot-dict-quota.conf
#expire = db:/var/db/dovecot/expire.db
}
plugin {
quota = maildir:User quota
quota_rule = *:storage=1GB
# 10% of 1GB = 100MB
quota_rule2 = Trash:storage=10%%
# 20% of 1GB = 200MB
quota_rule3 = Spam:storage=20%%
trash = /usr/local/etc/dovecot-trash.conf
expire = Trash 7 Spam 30
}
first_valid_uid = 101
last_valid_uid = 65534
#fisrt_valid_gid = 6
#last_valid_gid = 65534
Авторизация и доставка в Dovecot через MySql:
dovecot-sql.conf
<pre>driver = mysql connect = host=localhost dbname=postfix user=postfix password=********* default_pass_scheme = MD5-CRYPT password_query = SELECT username AS user, password FROM mailbox WHERE username = '%u' AND domain = '%d' user_query = SELECT maildir, 101 AS uid, 6 AS gid FROM mailbox WHERE username = '%u' AND domain = '%d' #password_query = SELECT password FROM mailbox WHERE username = '%u' #user_query = SELECT maildir, 65534 AS uid, 65534 AS gid FROM mailbox WHERE username = '%u'
ну и плагин Корзины:
dovecot-trash.conf
# Spam mailbox is emptied before Trash 1 Spam # Trash mailbox is emptied before Sent 2 Trash # If both Sent and "Sent Messages" mailboxes exist, the next oldest message # to be deleted is looked up from both of the mailboxes. 3 Sent 3 Sent Messages
Настраиваем Postfix:
собираем:
[X] PCRE Perl Compatible Regular Expressions
[X] DOVECOT Dovecot SASL authentication method
[X] TLS Enable SSL and TLS support
[X] MYSQL MySQL maps (choose version with WITH_MYSQL_VER)
[X] TEST SMTP/LMTP test server and generator
master.cf
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - n - - smtpd
#submission inet n - n - - smtpd
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#smtps inet n - n - - smtpd
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n - n - - qmqpd
pickup fifo n - n 60 1 pickup
cleanup unix n - n - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
tlsmgr unix - - n 1000? 1 tlsmgr
rewrite unix - - n - - trivial-rewrite
bounce unix - - n - 0 bounce
defer unix - - n - 0 bounce
trace unix - - n - 0 bounce
verify unix - - n - 1 verify
flush unix n - n 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - n - - smtp
# When relaying mail as backup MX, disable fallback_relay to avoid MX loops
relay unix - - n - - smtp
-o smtp_fallback_relay=
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - n - - showq
error unix - - n - - error
retry unix - - n - - error
discard unix - - n - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - n - - lmtp
anvil unix - - n - 1 anvil
scache unix - - n - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
#maildrop unix - n n - - pipe
# flags=DRhu user=vmail argv=/usr/local/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# The Cyrus deliver program has changed incompatibly, multiple times.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - pipe
# user=cyrus argv=/usr/local/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
#uucp unix - n n - - pipe
# flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# ====================================================================
#
# Other external delivery methods.
#
#ifmail unix - n n - - pipe
# flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
#
#bsmtp unix - n n - - pipe
# flags=Fq. user=bsmtp argv=/usr/local/sbin/bsmtp -f $sender $nexthop $recipient
#
#scalemail-backend unix - n n - 2 pipe
# flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store
# ${nexthop} ${user} ${extension}
#
#mailman unix - n n - - pipe
# flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
# ${nexthop} ${user}
dovecot unix - n n - - pipe
flags=DRhu user=vmail:mail argv=/usr/local/libexec/dovecot/deliver -f ${sender} -d ${recipient}
# dovecot unix - n n - - pipe
# flags=DRhu user=vmail:mail argv=/usr/libexec/dovecot/deliver -d ${recipient}
main.cf
mailbox_size_limit = 102400000 message_size_limit = 10240000 queue_directory = /var/spool/postfix command_directory = /usr/local/sbin daemon_directory = /usr/local/libexec/postfix data_directory = /var/db/postfix mail_owner = postfix myhostname = mail.pdahelp.info myorigin = $mydomain mydestination = $myhostname, localhost.$mydomain, localhost, $mydomain, mail.$mydomain, www.$mydomain, ftp.$mydomain # local_recipient_maps = unix:passwd.byname $alias_maps unknown_local_recipient_reject_code = 550 mynetworks_style = host mynetworks = 168.100.189.0/28, 127.0.0.0/8 relay_domains = $mydestination alias_maps = hash:/etc/aliases alias_database = hash:/etc/aliases home_mailbox = Maildir/ mail_spool_directory = /var/mail mailbox_command = /usr/local/libexec/dovecot/deliver mailbox_transport = dovecot smtpd_banner = $myhostname ESMTP $mail_name local_destination_concurrency_limit = 2 debug_peer_level = 2 debug_peer_list = 127.0.0.1 debugger_command = PATH=/bin:/usr/bin:/usr/local/bin:/usr/X11R6/bin ddd $daemon_directory/$process_name $process_id & sleep 5 sendmail_path = /usr/local/sbin/sendmail newaliases_path = /usr/local/bin/newaliases mailq_path = /usr/local/bin/mailq setgid_group = maildrop html_directory = /usr/local/share/doc/postfix manpage_directory = /usr/local/man sample_directory = /usr/local/etc/postfix readme_directory = /usr/local/share/doc/postfix dovecot_destination_recipient_limit = 1 virtual_transport = dovecot #virtual_mailbox_domains = proxy:mysql:$config_directory/mysql_virtual_domains_maps.cf virtual_mailbox_domains = другой_домен, другой_домен2 virtual_mailbox_base = /var/vmail virtual_mailbox_maps = proxy:mysql:$config_directory/mysql_virtual_mailbox_maps.cf virtual_alias_maps = proxy:mysql:$config_directory/mysql_virtual_alias_maps.cf virtual_minimum_uid = 101 virtual_uid_maps = static:101 virtual_gid_maps = static:12 smtpd_etrn_restrictions = permit_mynetworks, reject smtpd_helo_required = yes smtpd_recipient_restrictions = permit_mynetworks, permit_sasl_authenticated, reject_unauth_destination
mysql_virtual_alias_maps.cf
user = postfix password = ********* hosts = localhost dbname = postfix query = SELECT goto FROM alias WHERE address = '%s' AND active = '1'
mysql_virtual_mailbox_maps.cfuser = postfix password = *************** hosts = localhost dbname = postfix query = SELECT maildir FROM mailbox WHERE username = '%s'Настраиваем PostFixAdmin:
config.inc.php
<?php $CONF['configured'] = true; $CONF['setup_password'] = '***********:*************'; $CONF['postfix_admin_url'] = ''; $CONF['postfix_admin_path'] = dirname(__FILE__); $CONF['default_language'] = 'en'; $CONF['database_type'] = 'mysql'; $CONF['database_host'] = 'localhost'; $CONF['database_user'] = 'postfix'; $CONF['database_password'] = '***************'; $CONF['database_name'] = 'postfix'; $CONF['database_prefix'] = ''; $CONF['database_prefix'] = ''; $CONF['database_tables'] = array ( 'admin' => 'admin', 'alias' => 'alias', 'alias_domain' => 'alias_domain', 'config' => 'config', 'domain' => 'domain', 'domain_admins' => 'domain_admins', 'fetchmail' => 'fetchmail', 'log' => 'log', 'mailbox' => 'mailbox', 'vacation' => 'vacation', 'vacation_notification' => 'vacation_notification', 'quota' => 'quota', 'quota2' => 'quota2', ); $CONF['admin_email'] = 'root@pdahelp.info'; $CONF['smtp_server'] = 'pdahelp.info'; $CONF['smtp_port'] = '25'; $CONF['encrypt'] = 'md5crypt'; $CONF['authlib_default_flavor'] = 'md5raw'; $CONF['dovecotpw'] = "/usr/sbin/dovecotpw"; $CONF['min_password_length'] = 5; $CONF['generate_password'] = 'NO'; $CONF['show_password'] = 'NO'; $CONF['page_size'] = '10'; $CONF['default_aliases'] = array ( 'abuse' => 'abuse@pdahelp.info', 'hostmaster' => 'hostmaster@pdahelp.info', 'postmaster' => 'postmaster@pdahelp.info', 'webmaster' => 'webmaster@pdahelp.info' ); $CONF['domain_path'] = 'YES'; $CONF['domain_in_mailbox'] = 'NO'; $CONF['aliases'] = '10'; $CONF['mailboxes'] = '10'; $CONF['maxquota'] = '10'; $CONF['quota'] = 'YES'; $CONF['quota_multiplier'] = '1024000'; $CONF['transport'] = 'NO'; $CONF['transport_options'] = array ( 'virtual', // for virtual accounts 'local', // for system accounts 'relay' // for backup mx ); $CONF['transport_default'] = 'virtual'; $CONF['vacation'] = 'NO'; $CONF['vacation_domain'] = 'autoreply.change-this-to-your.domain.tld'; $CONF['vacation_control'] ='YES'; $CONF['vacation_control_admin'] = 'YES'; $CONF['alias_control'] = 'YES'; $CONF['alias_control_admin'] = 'YEs'; $CONF['special_alias_control'] = 'YES'; $CONF['alias_goto_limit'] = '0'; $CONF['alias_domain'] = 'YES'; $CONF['backup'] = 'YES'; $CONF['sendmail'] = 'YES'; $CONF['logging'] = 'YES'; $CONF['fetchmail'] = 'YES'; $CONF['fetchmail_extra_options'] = 'YES'; // Header $CONF['show_header_text'] = 'NO'; $CONF['header_text'] = ':: Postfix Admin ::'; $CONF['user_footer_link'] = "http://change-this-to-your.domain.tld/main"; $CONF['show_footer_text'] = 'YES'; $CONF['footer_text'] = 'pdahelp.info'; $CONF['footer_link'] = 'http://pdahelp.infp'; $CONF['welcome_text'] = <<<EOM Hi, Welcome to your new account. EOM; $CONF['emailcheck_resolve_domain']='NO'; //set to YES to enable this feature $CONF['show_status']='YES'; //display a guide to what these colors mean $CONF['show_status_key']='NO'; $CONF['show_status_text']=' '; $CONF['show_undeliverable']='YES'; $CONF['show_undeliverable_color']='tomato'; // mails to these domains will never be flagged as undeliverable $CONF['show_undeliverable_exceptions']=array("unixmail.domain.ext","exchangeserver.domain.ext","gmail.com"); $CONF['show_popimap']='NO'; $CONF['show_popimap_color']='darkgrey'; $CONF['show_custom_domains']=array("pdahelp.info","andboson.net"); $CONF['show_custom_colors']=array("lightgreen","lightblue"); $CONF['recipient_delimiter'] = ""; $CONF['create_mailbox_subdirs_prefix']='INBOX.'; $CONF['used_quotas'] = 'YES'; $CONF['new_quota_table'] = 'NO'; $CONF['theme_logo'] = 'images/logo-default.png'; $CONF['theme_css'] = 'css/default.css'; $CONF['xmlrpc_enabled'] = false; if (file_exists(dirname(__FILE__) . '/config.local.php')) { include(dirname(__FILE__) . '/config.local.php'); }Настраиваем RoundeCube:
main.inc.php
<?php $rcmail_config = array(); $rcmail_config['debug_level'] = 4; $rcmail_config['log_driver'] = 'file'; $rcmail_config['syslog_id'] = 'roundcube'; $rcmail_config['syslog_facility'] = LOG_USER; $rcmail_config['log_dir'] = 'logs/'; $rcmail_config['temp_dir'] = 'temp/'; $rcmail_config['enable_caching'] = FALSE; $rcmail_config['message_cache_lifetime'] = '10d'; $rcmail_config['auto_create_user'] = TRUE; $rcmail_config['default_host'] = 'pdahelp.info'; // TCP port used for IMAP connections $rcmail_config['default_port'] = 143; $rcmail_config['imap_auth_type'] = "check"; $rcmail_config['imap_root'] = null; $rcmail_config['imap_delimiter'] = null; $rcmail_config['username_domain'] = ''; $rcmail_config['mail_domain'] = ''; // Path to a virtuser table file to resolve user names and e-mail addresses $rcmail_config['virtuser_file'] = ''; $rcmail_config['virtuser_query'] = ''; $rcmail_config['smtp_server'] = ''; $rcmail_config['smtp_port'] = 25; $rcmail_config['smtp_user'] = ''; $rcmail_config['smtp_pass'] = ''; $rcmail_config['smtp_auth_type'] = ''; $rcmail_config['smtp_helo_host'] = 'pdahelp.info'; $rcmail_config['smtp_log'] = TRUE; $rcmail_config['sendmail_delay'] = 0; $rcmail_config['list_cols'] = array('subject', 'from', 'date', 'size', 'flag', 'attachment'); $rcmail_config['skin_include_php'] = FALSE; $rcmail_config['session_lifetime'] = 10; $rcmail_config['ip_check'] = TRUE; $rcmail_config['double_auth'] = false; $rcmail_config['des_key'] = 'rcmail-!24ByteDESkey*Str'; $rcmail_config['language'] = null; $rcmail_config['date_short'] = 'D H:i'; $rcmail_config['date_long'] = 'd.m.Y H:i'; $rcmail_config['date_today'] = 'H:i'; $rcmail_config['useragent'] = 'RoundCube Webmail/0.2.2'; $rcmail_config['product_name'] = 'RoundCube Webmail'; $rcmail_config['drafts_mbox'] = 'Drafts'; // store spam messages in this mailbox $rcmail_config['junk_mbox'] = 'Junk'; $rcmail_config['sent_mbox'] = 'Sent'; $rcmail_config['trash_mbox'] = 'Trash'; $rcmail_config['default_imap_folders'] = array('INBOX', 'Drafts', 'Sent', 'Junk', 'Trash'); // automatically create the above listed default folders on login $rcmail_config['create_default_folders'] = TRUE; // protect the default folders from renames, deletes, and subscription changes $rcmail_config['protect_default_folders'] = FALSE; // if in your system 0 quota means no limit set this option to TRUE $rcmail_config['quota_zero_as_unlimited'] = FALSE; $rcmail_config['mdn_requests'] = 0; // Use this charset as fallback for message decoding $rcmail_config['default_charset'] = 'UTF-8'; $rcmail_config['enable_spellcheck'] = TRUE; $rcmail_config['spellcheck_engine'] = 'googie'; $rcmail_config['spellcheck_uri'] = ''; $rcmail_config['spellcheck_languages'] = NULL; $rcmail_config['generic_message_footer'] = ''; // add a received header to outgoing mails containing the creators IP and hostname $rcmail_config['http_received_header'] = false; $rcmail_config['mail_header_delimiter'] = NULL; // session domain: .example.org $rcmail_config['session_domain'] = ''; $rcmail_config['address_book_type'] = 'sql'; $rcmail_config['ldap_public'] = array(); $rcmail_config['autocomplete_addressbooks'] = array('sql'); // don't allow these settings to be overriden by the user $rcmail_config['dont_override'] = array(); $rcmail_config['identities_level'] = 0; $rcmail_config['include_host_config'] = false; // don't let users set pagesize to more than this value if set $rcmail_config['max_pagesize'] = 200; // mime magic database $rcmail_config['mime_magic'] = '/usr/share/misc/magic'; // default sort col $rcmail_config['message_sort_col'] = 'date'; // default sort order $rcmail_config['message_sort_order'] = 'DESC'; $rcmail_config['enable_installer'] = false; // Log successful logins $rcmail_config['log_logins'] = false; $rcmail_config['delete_always'] = false; $rcmail_config['min_keep_alive'] = 60; /***** these settings can be overwritten by user's preferences *****/ // skin name: folder from skins/ $rcmail_config['skin'] = 'default'; // show up to X items in list view $rcmail_config['pagesize'] = 40; // use this timezone to display date/time $rcmail_config['timezone'] = 'auto'; // is daylight saving On? $rcmail_config['dst_active'] = (bool)date('I'); // prefer displaying HTML messages $rcmail_config['prefer_html'] = TRUE; $rcmail_config['show_images'] = 1; // compose html formatted messages by default $rcmail_config['htmleditor'] = TRUE; // show pretty dates as standard $rcmail_config['prettydate'] = TRUE; $rcmail_config['draft_autosave'] = 300; $rcmail_config['preview_pane'] = FALSE; $rcmail_config['focus_on_new_message'] = true; $rcmail_config['logout_purge'] = FALSE; $rcmail_config['logout_expunge'] = FALSE; $rcmail_config['inline_images'] = TRUE; $rcmail_config['mime_param_folding'] = 0; $rcmail_config['skip_deleted'] = FALSE; $rcmail_config['read_when_deleted'] = TRUE; $rcmail_config['flag_for_deletion'] = FALSE; $rcmail_config['keep_alive'] = 60; // If true all folders will be checked for recent messages $rcmail_config['check_all_folders'] = FALSE; // end of config file ?>Вроде все. Все работает. Просто нужно было осмысленно править конфиги. Ну ничего, для первого раза, без вопросов к "отцам" и т.п., 3 дня настройки почтового сервера - это нормально :)

