Архив автора: admin

Exim — моя подборка полезных команд Exim (exim4). Роутинг, работа с очередью, статус и так далее.

1. Проверяем, что нет ошибок в файле (файлах) конфигурации Exim, то есть что всё верно настроено (валидация конфига, короче):

# exim -bV
Exim version 4.80 #2 built 02-Jan-2013 18:59:17
Copyright (c) University of Cambridge, 1995 — 2012
(c) The Exim Maintainers and contributors in ACKNOWLEDGMENTS file, 2007 — 2012
Berkeley DB: Berkeley DB 5.1.29: (October 25, 2011)
Support for: crypteq iconv() IPv6 PAM Perl Expand_dlfunc GnuTLS move_frozen_messages Content_Scanning DKIM Old_Demime
Lookups (built-in): lsearch wildlsearch nwildlsearch iplsearch cdb dbm dbmjz dbmnz dnsdb dsearch ldap ldapdn ldapm mysql nis nis0 passwd pgsql sqlite
Authenticators: cram_md5 cyrus_sasl dovecot plaintext spa
Routers: accept dnslookup ipliteral iplookup manualroute queryprogram redirect
Transports: appendfile/maildir/mailstore/mbx autoreply lmtp pipe smtp
Fixed never_users: 0
Size of off_t: 8
Configuration file is /var/lib/exim4/config.autogenerated

В выводе можно найти версию Exim, то, что он поддерживает и имя конфигурационного файла, который был проверен.

2. Валидация email адреса:

# exim -bv scukonick@gmail.com
scukonick@gmail.com verified

3. Отправка письма и отладка этой отправки

Используйте эту команду, чтобы отправить с помощью Exim письмо на определённый адрес и получить подробную информацию по тому, как Exim обработал это письмо (курсивом выделен текст письма, его надо вбить самому):

# exim -v scukonick@gmail.com
LOG: MAIN
cwd=/etc/exim4 3 args: exim -v scukonick@gmail.com
Subject: test

Hey, my message
.

LOG: MAIN
<= root@aptrack.co U=root P=local S=312 T="test"
root@m5:/etc/exim4# LOG: MAIN
cwd=/var/spool/exim4 4 args: /usr/sbin/exim4 -v -Mc 1VpioC-00036Q-NT
delivering 1VpioC-00036Q-NT
Connecting to gmail-smtp-in.l.google.com [2a00:1450:400c:c05::1b]:25 … connected
SMTP<< 220 mx.google.com ESMTP fb7si2984260wjc.173 - gsmtp
SMTP>> EHLO mydomain.com
SMTP<< 250-mx.google.com at your service, [2a00:1a48:7806:117:fc8f:1b4a:ff08:4c93]
250-SIZE 35882577
250-8BITMIME
250-STARTTLS
250-ENHANCEDSTATUSCODES
250-PIPELINING
250 CHUNKING
SMTP>> STARTTLS
SMTP<< 220 2.0.0 Ready to start TLS
SMTP>> EHLO mydomain.com
SMTP<< 250-mx.google.com at your service, [2a00:1a48:7806:117:fc8f:1b4a:ff08:4c93]
250-SIZE 35882577
250-8BITMIME
250-ENHANCEDSTATUSCODES
250-PIPELINING
250 CHUNKING
SMTP>> MAIL FROM: SIZE=1345
SMTP>> RCPT TO:
SMTP>> DATA
SMTP<< 250 2.1.0 OK fb7si2984260wjc.173 - gsmtp
SMTP<< 250 2.1.5 OK fb7si2984260wjc.173 - gsmtp
SMTP<< 354 Go ahead fb7si2984260wjc.173 - gsmtp
SMTP>> writing message and terminating «.»
SMTP<< 250 2.0.0 OK 1386526199 fb7si2984260wjc.173 - gsmtp
SMTP>> QUIT
LOG: MAIN
=> scukonick@gmail.com F= P= R=outgoing_alerts T=remote_smtp S=325 H=gmail-smtp-in.l.google.com [2a00:1450:400c:c05::1b]:25 X=TLS1.2:RSA_ARCFOUR_SHA1:128 CV=no DN=»C=US,ST=California,L=Mountain View,O=Google Inc,CN=mx.google.com» C=»250 2.0.0 OK 1386526199 fb7si2984260wjc.173 — gsmtp» QT=12s DT=0s
LOG: MAIN
Completed QT=12s

4. Проверка роутинга письма (простая)

Проверяем, куда, через какие acl, роутеры, транспорты  и т.д. пройдет письмо. При этом само письмо не будет отправлено.

# exim -bt scukonick@gmail.com
scukonick@gmail.com
router = outgoing_alerts, transport = remote_smtp
host gmail-smtp-in.l.google.com [2a00:1450:400c:c05::1a] MX=5
host gmail-smtp-in.l.google.com [173.194.66.26] MX=5
host alt1.gmail-smtp-in.l.google.com [2a00:1450:400c:c05::1b] MX=10
host alt1.gmail-smtp-in.l.google.com [173.194.70.27] MX=10
host alt2.gmail-smtp-in.l.google.com [2a00:1450:4008:c01::1a] MX=20
host alt2.gmail-smtp-in.l.google.com [173.194.69.27] MX=20
host alt3.gmail-smtp-in.l.google.com [74.125.143.26] MX=30
host alt4.gmail-smtp-in.l.google.com [173.194.79.26] MX=40

Видно, что будет использован router outgoing_alerts, транспорт remote_smtp.Разумеется, в вашем конкретном случае роутер и транспорт могут быть (и скорее всего будут) другими.

5. Проверка роутинга письма с дебагом

Точно такая же проверка, как предыдущая, однако будет выведена куча дополнительной информации. То, что дополнительно будет выводиться, настраивается в параметре -d. Значения можно посмотреть в man exim, секция про параметр -d. Например, -d+all — выведет всё, что только можно.

# exim -bt -d+all scukonick@gmail.com

Я тут даже не буду приводить вывод этой команды, потому что  он ну уж очень большой. Однако это команда весьма полезна, когда вы пытаетесь разобраться, почему письмо отправляется куда-то вообще не туда и не тому:-)

Автор: AlexWinner
Дата публикации: 2013-12-17T10:09:00.000-08:00

Полезные команды MySQL

Моя подборка полезных команд для MySQL.

Узнать размер базы данных

SELECT table_schema "DB Name",
Round(Sum(data_length + index_length) / 1024 / 1024, 1) "DB Size in MB"
FROM   information_schema.tables
GROUP  BY table_schema
ORDER BY Round(Sum(data_length + index_length) / 1024 / 1024, 1) DESC;

Выводим 15 наиболее фрагментированных таблиц

Читать

Методика «Два сердца»

svet-radostiЭта методика дает возможность поговорить с другим человеком в своей визуализации, чтобы наладить отношения, разобраться в причинах непонимания, конфликта и устранить их. Методика поможет погасить любой конфликт и улучшить отношения.

В ней мы через свое сердце говорим с сердцем другого человека – наше сердце настраивается на разговор  с другим. Следуйте визуализации и смотрите,  что будет происходить, реакция может быть разная, могут возникать образы и ассоциации.

Читать

ПриватБанк “1С” упростили работу торговых предприятий с банковскими картами

ПриватБанк “1С” упростили работу торговых предприятий с банковскими картами

ПриватБанк “1С” упростили работу
торговых предприятий с банковскими картами
================================================================================
Privatbank on 20/01/2014 13:59:00

Фирма «1С» выпустила новый релиз редакции 3.0
решения «1С: Предприятие 8. Управление
торговлей для Украины», который
поддерживает работу с эквайринговой
системой ПриватБанка. Как сообщили в банке,
использование нового решения позволит
торговым предприятиям сократить затраты на
инкассацию или сдачу выручки, повысить
качество и скорость обслуживания клиентов,
обеспечивая тем самым эффективное
управление современным торговым
предприятием.
Программа позволяет не только производить
оплату платежными картами через
эквайринг-терминал ПриватБанка, но и
отслеживать процесс перечисления денежных
средств из банка, автоматизировать процесс
загрузки данных об операциях,
контролировать прохождения платежей.
Также, по данным статистики компании “1С”,
если торговая точка позволяет своим
клиентам оплачивать услуги платежными
картами, то благодаря эквайрингу от
ПриватБанка средний чек по предприятию
увеличивается в среднем на 28,6%.
«После того как мы установили POS-терминал в
нашем магазине, у нас вырос оборот. Клиенты
реже стали попадать в ситуацию, когда им не
хватает наличных. Выросли
удовлетворенность клиентов и средний чек» —
отмечает Марина Иванова, директор
продуктового магазина «Мир», г.
Днепропетровск.
Кроме того, интеграция эквайринговой
системы ПриватБанка обеспечит высокую
скорость и надежность при выполнении
финансовых операций, предоставляет
расширенную отчетность по операциям, а
также позволяет производить ряд
административных операций, связанных с
обслуживанием платежных карт. Драйвер для
подключения эквайринговой системы
ПриватБанка разработан компанией
«1С-Рарус».
Фирма «1С» (http://www.1c.ru/) специализируется на
разработке, дистрибьюции, издании и
поддержке компьютерных программ. «1С»
работает с пользователями через
разветвленную партнерскую сеть, которая
включает более 10 000 постоянных партнеров в
600 городах 23 стран, в т.ч. более 6700
фирм-1С:Франчайзи, сертифицированных «1С» на
оказание комплексных услуг по
автоматизации предприятий. Из собственных
разработок «1С» наиболее известны программы
системы «1С:Предприятие», которые
используются для автоматизации управления
и учета более чем в миллионе организаций, а
также продукты для домашних компьютеров и
образовательной сферы. «1С» является
официальным дистрибьютором более 100
зарубежных и отечественных производителей
программного обеспечения.

ПОДАРОК для гармонизации отношений

                                                                         

0-lyubov-e`to-radost-zhizni-521h364У меня вчера был День рождения!

И хотя в День рождения принято получать подарки,  а не дарить их, все же я хочу сделать Вам свой ПОДАРОК!

Пусть он добавит в вашу жизнь гармонии, радости, счастья, любви, и немного волшебства, чтобы все ваши желания всегда исполнялись!

Читать

Пример ускорения python используя ctypes

Один из вариантов ускорить выполнение кода Python — переписать медленный метод на язык C, с помощью ctypes можно подключать библиотеки написанные на C.
Ниже пример вызова C-метода и сравнение производительности.

1) Пишем метод (файл myfib.c)

unsigned long fib(unsigned long x)
{
if(x < 2) return x;
return fib(x-1) + fib(x-2);
}

2) Компилируем:

gcc -shared -Wl,-soname,myfib.so -o myfib.so -fPIC myfib.c

3) Вызываем из Python и сравниваем с функцией написанной на чистом python:

import ctypes
import timeit

fib = ctypes.CDLL('./myfib.so').fib
fib.restype = ctypes.c_long
fib.argtypes = (ctypes.c_ulong,)

print timeit.timeit('fib(32)', 'from __main__ import fib', number=1)

def pyfib(x):
if x < 2: return x
return pyfib(x-1) + pyfib(x-2)

print timeit.timeit('pyfib(32)', 'from __main__ import pyfib', number=1)

Результат:

0.0463268756866
1.08009696007

В итоге, за счет использования ctypes, мы получили ускорение в 23 раза.

Если использовать оптимизацию при компиляции, то можно получить большую производительность, для этого нужно указать ключ оптимизации:

gcc -O3 -shared -Wl,-soname,myfib.so -o myfib.so -fPIC myfib.c

Варианты ключей оптимизации:
-O1 — Базовая оптимизация
-O2 — GCC выполняет почти все поддерживаемые оптимизации, эта опция уменьшает как время компиляции так и время выполнения сгенерированного кода.
-O3 — Более сильная оптимизация, включает -O2 + некоторые дополнительные опции.

С учетом оптимизации -O3, мы получили такой результат:

0.023335695266
1.08294892311

Это быстрее в 46 раз чем на чистом python.

Тестировалось на ubuntu 12.10, python 2.7

Автор: D1VER
Дата публикации: 2013-12-16T05:21:00.001-08:00