пятница, 17 декабря 2010 г.
Как скрыть точки монтирования в Nautilus?
четверг, 16 декабря 2010 г.
Настройка Postfix+MySQL+Dovecot-POP3+Amavis в ubuntu server 10.04
$sudo mcedit /usr/local/sbin/dovecot_check_restart.sh #!/bin/sh HOST='localhost' PORT=110 #HP=@$HOST:$PORT HP=:$PORT echo 'Checking to see if Dovecot is up...' if ( /usr/sbin/lsof -Pni $HP | grep "$PORT (LISTEN)" 2>&1 >/dev/null ); then echo 'Dovecot is up'; else echo 'Dovecot is down, restarting...'; /etc/init.d/dovecot restart logger -p mail.info dovecot_check_restart.sh restarting Dovecot fi
$sudo mcedit /etc/crontab * * * * * /usr/local/sbin/dovecot_check_restart.sh 2>&1 > /dev/null
Полезные команды по работе с почтой:
Посмотреть активные настройки Postfix:
# postconf -d
Посмотреть сколько сообщений в очереди:
#mailq | grep Requests
Посмотреть конкретно что в очереди:
#mailq
Пнуть очередь на немедленную доставку:
#postsuper -r ALL; postfix flush
Пнуть конкретное письмо по ID:
#postsuper -r ID
Удалить письмо по ID:
#postsuper -d ID
Удаление группы писем от определенного FROM (на примере MAILER-DAEMON):
#FreeBSD: mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | xargs -I{} -n1 postsuper -d {} Linux: mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | xargs -I{} -n1 /usr/sbin/postsuper -d {}
Удаление группы писем от определенного FROM в статусе REQUIRE:
#mailq | grep 'MAILER-DAEMON' | awk '{print $1}' | tr -d '*' | xargs -I{} -n1 postsuper -d {}
Жопиздан:)
среда, 15 декабря 2010 г.
Настройка Postfix+MySQL+Dovecot-POP3+Amavis в ubuntu server 10.04
#>mcedit /etc/amavis/conf.d/15-content_filter_mode
и раскомментируем строки, начинающиеся с:
@bypass_virus_checks_maps
@bypass_virus_checks_maps
Рассмотрим еще один конфиг /etc/amavis/conf.d/20-debian_defaults. Его непосредственно, лучше не править. Чтоб поправить его настройки - правильнее будет править /etc/amavis/conf.d/50-user и добавим в него:
$sa_spam_subject_tag = '***SPAM***';
$QUARANTINEDIR = '/var/vmail/spamvirusmails';
$spam_quarantine_method = 'local:spam-%b-%i-%n';
$spam_quarantine_to = 'spam-quarantine';
$final_spam_destiny = D_DISCARD;
$sa_tag_level_deflt = undef;
$spam_admin = "root\@$mydomain";
1; # ensure a defined return
Возможные параметры:
$sa_spam_subject_tag: если установлен этот параметр - к теме email`а, который AMaViS сочтет спамом, будет добавлена строка "***SPAM***", установленная в этом параметре. Если мы хотим оставить "оригинальную" тему письма, то необходимо оставить этот параметр в виде: "$sa_spam_subject_tag = undef". Служебная инфа о том, что AMaViS пометил письмо "как спам", для пользователя все равно останется в X-Spam-Status заголовке.
$sa_tag_level_deflt: параметр спам-уровня (число). В зависимости от установленного уровня: выше или ниже, в заголовок письма будет добавляться спам-заголовки (т.е., на сколько я понял, в заголовок письма добавятся заголовки о спам проверке, вне зависимости от того, будет ли письмо расценено как спам или нет). Для упрощения отладки, мы всегда будем добавлять эти заголовки, поэтому этот параметр установлен в самый низкий уровень, т.е. "undef".
$sa_tag2_level_deflt: этот параметр спам-уровня отвечает за чувствительность спам-фильтра к определению спама. Лучше оставить его по-умолчанию (или вообще не определять в конфиге), ибо при слишком низком уровне - может проскочить много спама, при слишком высоком уровне - как спам могут быть расценены совершенно безобидные сообщения.
#> chown amavis:amavis -R /var/vmail/spamvirusmails
#> /etc/init.d/amavis restart
Проверяем, чтоб AMaViS слушал 10024 порт:
#> netstat -nap | grep 10024
Должно быть что то типа:
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN 12345/amavisd
Если получили похожую строку - значит AMaViS запущен и ждет SMTP сессии. В противном случае - смотри логи (/var/log/mail.log)
Теперь, рассмотрим как это работает. Кто то отправляет нам мыло из инета. Postfix его получает через TCP порт 25 (SMTP). Если Postfix пропускает это сообщение - он форвардит его AMaViS`у на TCP порт 10024 (SMTP). Далее, если AMaViS`а устраивает содержимое письма, то форвардит мыло обратно Postfix`у на TCP порт 10025 (SMTP). И после всего этого Postfix уже отправляет мыло до конечного получателя.
Объясняем Postfix`у вышеуказанную модель и укажем еще один важный параметр "receive_override_option", назначение которого рассмотрим позже:
#>postconf -e content_filter=smtp-amavis:[127.0.0.1]:10024
#>postconf -e receive_override_options=no_address_mappings
Также, необходимо объявить службу smtp-amavis в параметрах /etc/postfix/master.cf. Плюс, указать Postfix`у слушать 10025 порт, для получения писем от AMaViD:
smtp-amavis unix - - n - 2 smtp
-o smtp_data_done_timeout=1200
-o smtp_send_xforward_command=yes
-o disable_dns_lookups=yes
-o max_use=20
127.0.0.1:10025 inet n - - - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_delay_reject=no
-o smtpd_client_restrictions=permit_mynetworks,reject
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o smtpd_data_restrictions=reject_unauth_pipelining
-o smtpd_end_of_data_restrictions=
-o mynetworks=127.0.0.0/8
-o smtpd_error_sleep_time=0
-o smtpd_soft_error_limit=1001
-o smtpd_hard_error_limit=1000
-o smtpd_client_connection_count_limit=0
-o smtpd_client_connection_rate_limit=0
-o receive_override_options=no_header_body_checks,no_unknown_recipient_checks
-o local_header_rewrite_clients=
Важно! В данном случае -o mynetworks=127.0.0.0/8 необходимо оставить именно в таком виде, а не указывать mynetworks как /etc/postfix/main.cf. Ибо связка Postfix - AMaViS крутятся на одном сервере и находятся в пределах одной подсети 127.0.0.0/8.
Перезагрузим Postfix:
#> postfix reload
Дадим некоторые пояснения. Сначала мы установили опцию receive_override_options в значение no_address_mapping, ее мы упоминали выше. Она отключает все сопоставления (mapping) адресов. Для чего это нужно?
Postfix принимает письмо. Правила редиректа (таблица forwardings в MySQL) из-за отключения сопоставления адресов не сработали (не подтверждены). Письмо пересылается в службу smtp-amavis, после чего опять возвращается на 127.0.0.1:10025 уже с кучей параметров. Один из этих параметров как раз опять receive_override_option, но теперь уже без значения no_address_mapping (т.е. теперь сопоставление адресов включено). И уже на этом этапе происходит обработка таблицы forwardings. Т.е. эта опция необходима, что бы не задваивать письма при форвардинге.
Внимание! receive_override_option = no_address_mapping фактически дает директиву Postfix отключить форвардинг. И если впоследствии мы решим отключить AMaViS, то нужно будет убрать и эту опцию!!!
Напомним, что пользователь "clamav" должен быть в группе "amavis", что бы эти службы могли общаться друг сдругом. Добавим его туда:
#>adduser clamav amavis
#>/etc/init.d/clamav-daemon restart
Отключим спам проверку для нашей (внутри нашего домена) исходящей почты. Для этого в /et/amavis/conf.d/50-user перед "1;" добавим такие строки:
@lookup_sql_dsn = ( ['DBI:mysql:database=mail;host=127.0.0.1;port=3306',
'mail_admin',
'mailadminpass']);
$sql_select_policy = 'SELECT domain FROM domains WHERE CONCAT("@",domain) IN (%k)';
@lookup_sql_dsn определяет параметры доступа AMaViS кнашей базе данных mail в MySQL. А $sql_select_policy задает SQL запрос, который выполняется когда AMaViS определяет из какого домена идет отсылка и принадлежит ли полученный домен нашему. %k - набор строк, с которыми идет сопоставление. Т.е. полноценный SQL запрос будет выглядеть следующим образом:
SELECT domain FROM domains WHERE CONCAT("@",name)
IN ( 'john@example.com',
'john',
'@example.com',
'@.example.com',
'@.com',
'@.')
Выглядит, конечно странно... Но в конечном итоге получим строку '@exemple.com'.
Перегрузим AMaViS:
#>/etc/init.d/amavis restart
Пробуем отослать мыло на john@exemple.com. Если просмотреть заголовки письма, то мы должны найти строки, добавленные AMaViS:
X-Virus-Scanned: Debian amavisd-new at mymailserver
X-Spam-Score: 0
X-Spam-Level:
X-Spam-Status: No, score=0 tagged_above=-9999 required=6.31 tests=[none]
На этом настройка завершена! Все входящие письма теперь будут проверяться на вирусы и спам. Выполним еще одну проверку. Пример спама есть в /usr/share/docs/spamassasin/exemples/sample-spam.txt. Отправим спам-сообщение на jhon@exemple.com:
#>sendmail john@example.com < /usr/share/doc/spamassassin/examples/sample-spam.txt
Смотрим в логи /var/log/mail.log, должны увидеть что AMaViS отработал:
amavis[13001]: (13001-02) Passed SPAM, <...> ->, ...
Отлично! Письмо помечено как спам и отправлено Jhon`у. И, наконец, устанавливаем необходимые права:
#>chmod o= /etc/amavis/conf.d/50-user
пятница, 10 декабря 2010 г.
Настройка Postfix+MySQL+Dovecot-POP3+Amavis в ubuntu server 10.04
#>postconf -e mynetworks=192.168.10.0/24, 192.168.1.0/24, 192.168.2.0/24
Однако, может возникнуть ситуация, когда наш пользователь на данный момент не подключен к нашей локальной сети, но при этом ему необходимо отправлять письма используя наш сервер.
#>postconf -e smtpd_sasl_type=dovecot
#>postconf -e smtpd_sasl_path=private/auth
#>postconf -e smtpd_sasl_auth_enable=yes
#>postconf -e smtpd_recipient_restrictions=check_sender_access hash:/etc/postfix/restricted_senders,
permit_mynetworks,
permit_sasl_authenticated,
reject_unknown_sender_domain,
reject_non_fqdn_recipient,
reject_unknown_recipient_domain,
reject_unverified_recipient,
reject_unauth_destination
kimo.ua 571 We found it easier just to block youantre.com.ua 571 We found it easier just to block youmail.trcgs.com 571 Buzz off!trcgs.com 571 Buzz off!*.hinet.net 571 Buzz off!ukr.net OK*.ukr.net OKezvit.com.ua OKmail.ezvit.com.ua OK*.google.com OK
ну и объясним postfix`у о существовании этого файла:#>postmap /etc/postfix/restricted_senders
#>postconf -e disable_vrfy_command = yes
#>postconf -e strict_rfc821_envelopes = yes
#>postconf -e smtpd_helo_required = yes
#>postconf -e smtp_helo_timeout = 500s
#>postconf -e minimal_backoff_time = 300s
#>postconf -e queue_run_delay = 240s
#>postconf -e smtpd_helo_restrictions = reject_invalid_hostname,
permit_mynetworks,
permit_sasl_authenticated,
reject_non_fqdn_hostname
#>postconf -e smtpd_sender_restrictions = check_sender_access hash:/etc/postfix/restricted_senders,
permit_mynetworks,
reject_unknown_sender_domain,
reject_invalid_hostname,
reject_non_fqdn_hostname,
reject_non_fqdn_sender,
reject_unknown_client,
reject_unknown_hostname,
reject_rbl_client sbl-xbl.spamhaus.org,
reject_rbl_client dnsbl.njabl.org,
reject_rbl_client cbl.abuseat.org,
reject_rbl_client dul.ru,
reject_rhsbl_sender dsn.rfc-ignorant.org,
reject_rbl_client opm.blitzed.org,
reject_rbl_client list.dsbl.org,
reject_rbl_client sbl.spamhaus.org,
reject_rbl_client blackholes.mail-abuse.org,
reject_rbl_client dialups.mail-abuse.org,
reject_rbl_client dynablock.njabl.org,
reject_rbl_client combined.njabl.org,
reject_rbl_client dnsbl.sorbs.net,
reject_rhsbl_sender dsn.rfc-ignorant.org
#>postconf -e smtpd_data_restrictions = permit_mynetworks
reject_unauth_pipelining,
reject_multi_recipient_bounce,
permit
#>telnet localhost smtp
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 mailtest ESMTP Postfix (Ubuntu)
ehlo example.com
250-mailtest
250-PIPELINING
250-SIZE 10240000
250-VRFY
250-ETRN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
auth plain am9obkBleGFtcGxlLmNvbQBqb2huQGV4YW1wbGUuY29tAGpob24=
235 2.0.0 Authentication successful
quit
221 2.0.0 Bye
$>perl -MMIME::Base64 -e 'print encode_base64("john\@example.com\0john\@example.com\0password")';
Теперь можно потестить отправку мыла с включенной аутентификацией SMTP. Для этого временно уберем нашу локалку из доверительных сетей:
#>postconf -e mynetworks=
#>postfix reload
postfix/smtpd[4032]: 1234567890: client=..., sasl_method=PLAIN, sasl_username=john@example.com
postfix/cleanup[4040]: 2EAE8379CB: message-id=<...>
postfix/qmgr[3963]: 1234567890: from=john@example.com, size=830, nrcpt=1 (queue active)
postfix/smtpd[4032]: disconnect from ...
postfix/smtp[4041]: 1234567890: to=devnull@workaround.org,
relay=torf.workaround.org[212.12.58.129]:25, delay=6,
delays=0.09/0.08/5.6/0.23, dsn=2.0.0, status=sent
(250 OK id=1HsPC3-0008UJ-O5)
postfix/qmgr[3963]: 2EAE8379CB: removed
postfix/smtpd[4032]: connect from ...[10.20.30.40]
postfix/smtpd[4032]: warning: ...[10.20.30.40]: SASL PLAIN authentication failed:
postfix/smtpd[4032]: lost connection after AUTH from ...[10.20.30.40]
postfix/smtpd[4032]: disconnect from ...[10.20.30.40]
#>postconf -e mynetworks=192.168.10.0/24, 192.168.1.0/24, 192.168.2.0/24
#>postfix reload