приятная новость
Решил обновить GD на сервере (freebsd 7.2). Заодно и nginx и много чего еще.
Приятной новостью оказалось, что в PHP 5.3.x php-fpm включен в порт и достаточно неплохо работает.
Нужно чаще читать рассылки )
SSH, ограничение домашним каталогом
Проще говоря, ssh chroot.
Имеем сервер FreeBSD 7.2-RELEASE
Нужно дать ssh под один проект, но не хочется, чтоб там лишнее путалось под ногами, пусть ему будет доступна только его домашняя директория и Павлик Аштеэмэл. Поэтому копаем Гугль.
Из сотен похожих способов решения, находим один, который работает и отлично описан.
Из дополнительных действий — это лишь копирование bash, который у меня в качестве шела юзеру.
На всякий случай, продублирую сам скрипт
#!/bin/sh # В скрипт нужно передавать имя пользователя для которого создаем chroot окружение if [ "$1" = "" ] ; then echo " Usage: $0 [ username ]" exit fi USER=$1 GID=`cat /etc/master.passwd | grep "^$USER:" | cut -d ":" -f 4` HOME=/home/$USER # Задаем список бинарей, нужных для работы в chroot BINS=" /bin/cat \ /bin/chmod \ /bin/cp \ /bin/csh \ /bin/date \ /bin/df \ /bin/echo \ /bin/expr \ /bin/ln \ /bin/ls \ /bin/mkdir \ /bin/mv \ /bin/ps \ /bin/pwd \ /bin/rm \ /bin/rmdir \ /bin/sh \ /usr/bin/awk \ /usr/bin/bzip2 \ /usr/bin/diff \ /usr/bin/du \ /usr/bin/ee \ /usr/bin/fetch \ /usr/bin/find \ /usr/bin/grep \ /usr/bin/gunzip \ /usr/bin/gzip \ /usr/bin/less \ /usr/bin/sed \ /usr/bin/sort \ /usr/bin/scp \ /usr/bin/ssh \ /usr/bin/tail \ /usr/bin/tar \ /usr/bin/touch \ /usr/bin/vi \ /usr/bin/uname \ /usr/bin/uptime \ /usr/local/bin/mc \ /usr/local/bin/mcedit \ /usr/local/bin/mcmfmt \ /usr/local/bin/unrar \ /usr/local/bin/unzip \ " # Создаем структуру каталогов chroot окружения mkdir $HOME/bin mkdir $HOME/etc mkdir $HOME/home mkdir $HOME/home/$USER mkdir $HOME/lib mkdir $HOME/libexec mkdir $HOME/tmp mkdir $HOME/usr mkdir $HOME/usr/bin mkdir $HOME/usr/local mkdir $HOME/usr/local/bin mkdir $HOME/usr/local/etc mkdir $HOME/usr/local/share # Копируем бинарники в chroot окружение for item in $BINS; do cp $item $HOME$item done # Определяем какие библиотеки необходимо скопировать chroot for item in $BINS; do ldd $item |awk '{print $3}'|grep "." >> /tmp/libs done # Копируем библиотеки for item in `cat /tmp/libs|sort|uniq`; do cp $item $HOME/lib/ done # Копируем оставшиеся необходимые файлы и библиотеки cp /etc/termcap $HOME/etc/termcap cp /etc/resolv.conf $HOME/etc/resolv.conf cp /etc/nsswitch.conf $HOME/etc/nsswitch.conf cp -R /usr/local/share/mc $HOME/usr/local/share/mc cp /libexec/ld-elf.so.1 $HOME/libexec/ld-elf.so.1 # Создадим /etc/motd для пользователя echo "Welcome $USER" > $HOME/etc/motd # Теперь /etc/profile для него же echo 'export TERMCAP=/etc/termcap' > $HOME/etc/profile echo 'export PS1="$ "' >> $HOME/etc/profile # /etc/group тоже нужен свой cat /etc/group | grep $GID > $HOME/etc/group # Теперь внутри chroot создадим пользователя cat /etc/master.passwd|grep "^$USER:" > $HOME/etc/master.passwd pwd_mkdb -d $HOME/etc $HOME/etc/master.passwd # Выставляем права chown root:wheel $HOME chmod 755 $HOME chmod 755 $HOME chown -R $USER:$GID $HOME/bin chown -R $USER:$GID $HOME/etc chown -R $USER:$GID $HOME/home chown -R $USER:$GID $HOME/lib chown -R $USER:$GID $HOME/libexec chown -R $USER:$GID $HOME/tmp chown -R $USER:$GID $HOME/usr chmod 777 $HOME/tmp # Убираем за собой rm /tmp/libs
Ну и часть конфига ssh для этого юзера:
Match User пользователь ChrootDirectory /home/%u
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 дня настройки почтового сервера - это нормально :)Творческая пора.
5 октября, 2009 · Posted in Без рубрики · 2 комментарияТак сложилось, что с осенью связаны большинство моих начинаний. Это практически все работы, сайты, ремонты в квартире, работы над собой и пр. Такое время. Надоедает пинать балду и хочется творить.
Свершилось то, о чем так долго говорилось и думалось: сервер обрел более надежную мать и переехал на колокейшн к провайдеру. Под эту дудку, на Godaddy были куплены два домена и вживлены в этот сервер.
andboson.info — пока без работы. Пусть повисит. Пока думаю.
andboson.net — сделал сайт, на котором выкладываю те фото, которые понравились мне за долгие года листания интернета. По большей части, конечно, это «ню». Что может быть красивее женщины?
Официально: добро пожаловать на сайт «Избранное у других». Лучшие фото интернета. Не мои, но тщательно отобраны неграми мной на бескрайних плантациях кофе фотосайтов.
Че-то еще хотел написать…а, да: процесс ковыряния в консоли FreeBSD, аська и ну другие дела. Промазал окном, в результате:
pdahelp.info# я дома был :) pdahelp.info# Слишком много ).FreeBSD — суровая ось, ей лишние смайлы не к чему.
вокруг web
9 июля, 2009 · Posted in Без рубрики · CommentПереставил ОС на домашнем сервере. Теперь на нем полноценно живет FreeBSD 7.2 и раздает в мир свое содержимое.
К переносу сервера на колокейшн пока не готов ни морально, ни материально. Проплачен другой хостинг, да и в надежности аппаратной части сервера я не совсем уверен.Настраивая сервер, решил поискать альтернативную веб-статистику, поскольку AWStats со своим анахронизмом чтения логов и слишком примитивным интерфейсом меня не устраивает.
Наткнулся на Piwik. Очень достойно.
Она позиционируется как опенсорсный аналог Google Analytics. Масса возможностей. Отмечу некоторые:
- Простая установка
- Удобный интерфейс
- Настраиваемый уровень доступа
- Настраиваемый интерфейс
- Поддержка плагинов
- Публикуемые виджеты
- Простое добавление сайтов
- Сбор статистики ведется с помощью javascript-вставки
- Переключение режимов отображения (графики\чарты\таблицы)
- Экспорт данных
и многое другое.
Системные требования:
- PHP = >5.1.3
- MySQL >= 4.1
- Pdo extension
- Pdo_Mysql extension
Установка, как и общий интерфейс, напоминает WordPress. Все так же легко и интуитивно. Единственное, в чем возникло затруднение — это установка pdo_mysql extension, поскольку не знал, что его нужно ставить из /usr/ports/database/php5-pro_mysql .
Добавление сайта заключается в описаниии урла сайта, названия и добавлении кода трекинга на сайт.
Поглядеть, как работает это у меня можно тут:
логин: demo
пароль: demopiwik
UPD: пример виджета:
Сервер жив
Коль жизнь показала мне гримасу безэлектрического ужаса, в дом, а точнее, к домашнему серверу, пришел ИБП. Хороший Smart UPS 620, 1999 года рождения.
Коммуникационные возможности его выражены соединением по com-порту. Поэтому пришлось выбирать, безопасность какой ос важнее: Хост Windows или гостевой freeBSD.
Поскольку ntfs достаточно неплохо чувствует себя при выключении, подключил ИБП к freebsd, которая крутится в VMWare. Помог мне NUT.
Не обошлось без определенных движений с бубном. Как оказалось, по умолчанию, в ИБП параметр ups.delay.shutdown был выставлен на 20 сек. Чего, конечно же, не хватает ОС для корректного завершения работы. Путем полевых испытаний, было достигнуто эмпирическое значение:
>upsc myups | grep delay
ups.delay.shutdown: 300
ups.delay.start: 000
Теперь система начинает завершать работу примерно на 50% заряда батарей.
Вы спросите меня, зачем мне все эти игры с Windows, VMWare и freeBSD? Почему не оставить одну ОС и настраивать все на ней?
Ответ прост: TVersity.
Если б не было этой замечательной программы, я бы оставил freeBSD и не мучался (или мучался только с ней). К сожалению, под *nix системы ее достойных аналогов я не нашел. Более-менее похож на нее MediaTomb, но, по удобству использования, ему очень далеко до TVersity.