• Автоматизация развертывания Docker-контейнеров на произвольной инфраструктуре
    0
    не знаю чем вам Ансибл не сгодился? мы вполне себе неплохо дженкинс+ансибл используем.
    Нужно вам найти ДевОПСа хорошего.

    Кстати, до этого мы лет пять строили велосипеды через Фабрику. Теперь вот всем этим занимается Ансибл.
  • Очередная миграция PROXMOX в softRAID1, но теперь уже 3.2 и на GPT-разделах, установка FreeNAS 9.2 на виртуальную машину и проброс в него физического диска
    0
    gep2005 Поставил поиграться 4ю бэту. Груб в упор не хотел видеть диски пока не поплясал с бубном.
    Помогло либо это: vladimir-stupin.blogspot.com/2012/05/lvm.html (а именно)
    # apt-get install lvm2
    # cp /usr/share/initramfs-tools/hooks/lvm2 /etc/initramfs-tools/hooks/
    # cp /usr/share/initramfs-tools/scripts/local-top/* /etc/initramfs-tools/scripts/local-top/
    # update-initramfs -u
    


    Либо то что собрал initramfs без параметра -u, а с -c
  • Районы… Кварталы…
    +1
    Сейчас начнётся про Крым :(
  • Запуск OpenWRT 14.07 на Mikrotik и пример сборки Аsterisk c дополнительным модулем
    0
    Я тут плавно переехал на форум Микротика по этому поводу: forum.mikrotik.com/viewtopic.php?f=15&t=32187
  • Запуск OpenWRT 14.07 на Mikrotik и пример сборки Аsterisk c дополнительным модулем
    0
    Не знаю как у вас, но у меня это дело падает через пару минут аптайма. Не успел даже пароль на рута поменять :(
    Хост система — RB951G-2HnD (mipsbe) — RouterOS 6.25

    trace
    root@OpenWrt:/# passwd
    Changing password for root
    New password:
    Retype password:
    Password for root changed by root
    root@OpenWrt:/# [ 0.000000] skbuff: skb_over_panic: text:c02d30e4 len:14272 put:14272 head:c1bd0e80 data:c1bd0ec0 tail:0xc1bd4680 end:0xc
    1bd1500 dev:[ 0.000000] Kernel bug detected[#1]:
    [ 0.000000] CPU: 0 PID: 0 Comm: swapper Not tainted 3.10.49 #2
    [ 0.000000] task: c0338558 ti: c032e000 task.ti: c032e000
    [ 0.000000] $ 0: 00000000 10008200 0000007f c0330000
    [ 0.000000] $ 4: 10008200 00000001 00001248 c0372020
    [ 0.000000] $ 8: 35303020 c0373268 0000004b 00000000
    [ 0.000000] $12: 0000004b 00000000 00000000 00000000
    [ 0.000000] $16: c1929c80 00000180 00000060 00000000
    [ 0.000000] $20: c0380000 c037d340 c037db44 c0378198
    [ 0.000000] $24: 00000000 c02cff58
    [ 0.000000] $28: c032e000 c032faf8 c0330000 c02ce660
    [ 0.000000] Hi: 00000000
    [ 0.000000] Lo: 83126e98
    [ 0.000000] epc: c02ce660 skb_panic+0x58/0x5c
    [ 0.000000] Not tainted
    [ 0.000000] ra: c02ce660 skb_panic+0x58/0x5c
    [ 0.000000] Status: 10008202 KERNEL EXL
    [ 0.000000] Cause: 00000024
    [ 0.000000] PrId: 0001800a (MIPS 4Kc)
    [ 0.000000] Modules linked in: pppoe ppp_async iptable_nat pppox ppp_generic nf_nat_ipv4 nf_conntrack_ipv4 ipt_MASQUERADE xt_time xt_tcpu
    dp xt_state xt_nat xt_multiport xt_mark xt_mac xt_limit xt_id xt_conntrack xt_comment xt_TCPMSS xt_REDIRECT xt_LOG xt_CT slhc nf_nat_irc nf_
    nat_ftp nf_nat nf_defrag_ipv4 nf_conntrack_irc nf_conntrack_ftp iptable_raw iptable_mangle iptable_filter ipt_REJECT ip_tables crc_ccitt ip6
    t_REJECT ip6table_raw ip6table_mangle ip6table_filter ip6_tables x_tables nf_conntrack_ipv6 nf_conntrack nf_defrag_ipv6 ipv6
    [ 0.000000] Process swapper (pid: 0, threadinfo=c032e000, task=c0338558, tls=00000000)
    [ 0.000000] Stack: 00000740 c0306098 c02d30e4 000037c0 000037c0 c1bd0e80 c1bd0ec0 c1bd4680
    c1bd1500 c0321eb4 00000000 c02833dc 00000000 c1ad87b0 c1868c70 00000170
    0000005c c02d30e4 00000011 00000001 58b9db23 00000043 c1883a90 00010000
    00000000 00000000 00000043 c033c04c c03331e0 c0330000 c0330000 c01cfa78
    c1ade000 c0330e50 c1ade000 c0290740 00010000 c01fa9e8 c033c04c 00010000

    [ 0.000000] Call Trace:
    [ 0.000000] [] skb_panic+0x58/0x5c
    [ 0.000000] [] skb_put+0x48/0x50
    [ 0.000000] [] veth_interrupt+0x198/0x31c
    [ 0.000000] [] handle_irq_event_percpu+0x58/0x260
    [ 0.000000] [] handle_irq_event+0x3c/0x60
    [ 0.000000] [] handle_edge_irq+0x164/0x1b4
    [ 0.000000] [] generic_handle_irq+0x3c/0x54
    [ 0.000000] [] do_IRQ+0x1c/0x2c
    [ 0.000000] [] virq_cascade_irq+0x3c/0x70
    [ 0.000000] [] handle_irq_event_percpu+0x58/0x260
    [ 0.000000] [] handle_percpu_irq+0x54/0x84
    [ 0.000000] [] generic_handle_irq+0x3c/0x54
    [ 0.000000] [] do_IRQ+0x1c/0x2c
    [ 0.000000] [] ret_from_irq+0x0/0x4
    [ 0.000000] [] __do_softirq+0x9c/0x1d4
    [ 0.000000] [] do_softirq+0x48/0x68
    [ 0.000000] [] irq_exit+0x54/0x70
    [ 0.000000] [] ret_from_irq+0x0/0x4
    [ 0.000000] [] __r4k_wait+0x20/0x40
    [ 0.000000] [] cpu_startup_entry+0xd0/0x140
    [ 0.000000] [] start_kernel+0x3a0/0x3b8
    [ 0.000000]
    [ 0.000000]
    Code: 24841ebc 0c0b3835 00603821 <000c000d> 27bdffc0 afb00034 afbf003c afb10038 00808021
    [ 0.000000] ---[ end trace 461164077349d5ee ]---
    [ 0.000000] Kernel panic — not syncing: Fatal exception in interrupt
    [ 0.000000] Rebooting in 3 seconds..[ 0.000000] Linux version 3.10.49 (zentavr@zentavr-ig) (gcc version 4.8.3 (OpenWrt/Linaro GCC 4.8-
    2014.04 r44162) ) #2 Sun Feb 8 19:32:34 EET 2015
    [ 0.000000] CPU revision is: 0001800a (MIPS 4Kc)
    [ 0.000000] Determined physical RAM map:
    [ 0.000000] memory: 00243000 @ 00101000 (usable)
    [ 0.000000] memory: 0002c000 @ 00344000 (usable after init)
    [ 0.000000] User-defined physical RAM map:
    [ 0.000000] memory: 02000000 @ 00000000 (usable)
    [ 0.000000] Initrd not found or empty — disabling initrd
    [ 0.000000] Zone ranges:
    [ 0.000000] DMA [mem 0x00000000-0x01ffffff]
    [ 0.000000] Normal empty
    [ 0.000000] Movable zone start for each node
    [ 0.000000] Early memory node ranges
    [ 0.000000] node 0: [mem 0x00000000-0x01ffffff]
    [ 0.000000] Primary instruction cache 64kB, VIPT, 4-way, linesize 32 bytes.
    [ 0.000000] Primary data cache 32kB, 4-way, VIPT, cache aliases, linesize 32 bytes
    [ 0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 8128
    [ 0.000000] Kernel command line: console=hvc0 board=vm mem=32M init=/etc/preinit
    [ 0.000000] PID hash table entries: 128 (order: -3, 512 bytes)
    [ 0.000000] Dentry cache hash table entries: 4096 (order: 2, 16384 bytes)
    [ 0.000000] Inode-cache hash table entries: 2048 (order: 1, 8192 bytes)
    [ 0.000000] Memory: 28820k/32768k available (1936k kernel code, 3948k reserved, 377k data, 176k init, 0k highmem)
    [ 0.000000] NR_IRQS:168
    [ 0.000000] console [hvc0] enabled
    [ 0.000000] Calibrating delay loop… 242.94 BogoMIPS (lpj=485888)
    [ 0.000000] pid_max: default: 32768 minimum: 301
    [ 0.000000] Mount-cache hash table entries: 512
    [ 0.000000] NET: Registered protocol family 16
    [ 0.000000] bio: create slab <bio-0> at 0
    [ 0.000000] Switching to clocksource MIPS
    [ 0.000000] NET: Registered protocol family 2
    [ 0.000000] TCP established hash table entries: 512 (order: 0, 4096 bytes)
    [ 0.000000] TCP bind hash table entries: 512 (order: -1, 2048 bytes)
    [ 0.000000] TCP: Hash tables configured (established 512 bind 512)
    [ 0.000000] TCP: reno registered
    [ 0.000000] UDP hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.000000] UDP-Lite hash table entries: 256 (order: 0, 4096 bytes)
    [ 0.000000] NET: Registered protocol family 1
    [ 0.000000] MFS init
    [ 0.000000] squashfs: version 4.0 (2009/01/31) Phillip Lougher
    [ 0.000000] msgmni has been set to 56
    [ 0.000000] io scheduler noop registered
    [ 0.000000] io scheduler deadline registered (default)
    [ 0.000000] TCP: cubic registered
    [ 0.000000] NET: Registered protocol family 17
    [ 0.000000] Bridge firewalling registered
    [ 0.000000] 8021q: 802.1Q VLAN Support v1.8
    [ 0.000000] VFS: Mounted root (metafs filesystem) readonly on device 0:9.
    [ 0.000000] Freeing unused kernel memory: 176K (c0344000 — c0370000)
    procd: Console is alive
    procd: — preinit — Press the [f] key and hit [enter] to enter failsafe mode
    Press the [1], [2], [3] or [4] key and hit [enter] to select the debug level
    mounting /dev/root
    procd: — early — procd: — ubus — procd: — init — Please press Enter to activate this console.

    BusyBox v1.22.1 (2015-02-08 19:20:44 EET) built-in shell (ash)
    Enter 'help' for a list of built-in commands.

    _______ ________ __
    | |.-----.-----.-----.| | | |.----.| |_
    | — || _ | -__| || | | || _|| _|
    |_______|| __|_____|__|__||________||__| |____|
    |__| W I R E L E S S F R E E D O M
    — BARRIER BREAKER (Barrier Breaker, r44162)
    — * 1/2 oz Galliano Pour all ingredients into
    * 4 oz cold Coffee an irish coffee mug filled
    * 1 1/2 oz Dark Rum with crushed ice. Stir.
    * 2 tsp. Creme de Cacao
    — root@(none):/# [ 0.000000] NET: Registered protocol family 10
    [ 0.000000] nf_conntrack version 0.5.0 (469 buckets, 1876 max)
    [ 0.000000] ip6_tables: © 2000-2006 Netfilter Core Team
    [ 0.000000] ip_tables: © 2000-2006 Netfilter Core Team
    [ 0.000000] xt_time: kernel timezone is -0000
    [ 0.000000] PPP generic driver version 2.4.2
    [ 0.000000] NET: Registered protocol family 24

    root@OpenWrt:/# uptime me
    21:16:58 up 0 min, load average: 1.85, 0.48, 0.16
    root@OpenWrt:/# uptime
    21:17:02 up 0 min, load average: 1.94, 0.52, 0.17
    root@OpenWrt:/# [ 0.000000] device eth0 entered promiscuous mode
    [ 0.000000] br-lan: port 1(eth0) entered forwarding state
    [ 0.000000] br-lan: port 1(eth0) entered forwarding state
    [ 0.000000] br-lan: port 1(eth0) entered forwarding state
    procd: — init complete —
  • Тестируем новый тип бэкапа MySQL
    0
    Я в своей практике использую Перконовскую xtrabackup (а также инкрементальный бекап).
    В Амазон-облаке — RDS/EBS снапшоты. так проще.
  • Управление репутацией рассыльщика, или Кто виноват и что делать, если ваша рассылка попадает в спам?
    0
    А ещё мыло.ру кстате шлёт DMARC-репорты. По моему опыту это практически одна из немногих компаний в ру- и юа-нете которая так делает.

    Спасибо им за это :)
  • AdvoCam-FD7 Profi-GPS – топовый регистратор с возможностью записи в Super Full HD 1296p
    0
    В Украине не продается?
  • Перевод из аккаунта Payoneer на счет в местном банке
    +1
    Стоимость перевода (комиссия Payoneer) какая?
  • Mikrotik и OSPF. С чем пришлось столкнуться и как мы это побороли
    0
    Читаю про микротик и начинаю жалеть что его купил. Не ужели все так плохо?

    Я вот никак не подружу его с амазоновским ipsec в VPC+bgp.

    Вроде туннель есть, сессия бгп устанавливается, а рвется коннект то каждую минуту, то каждые пять.
  • Zabbix: Резервное копирование небольшой базы
    0
    Когда у меня был заббикс, я по первой тупо пропускал таблицы с историей значений и т.д. Почему? Мы как-то считали что хер с ней с историей, главное не похерить все те метрики и настройки которые долгое время туда вбивались.

    Ну а потом я им написал скрипт, который делал инкрементальный бэкап используя всю ту же перкону xtrabackup.
    Кстате, вот он. Не мешало бы ещё закинуть некоторые проверки возвращаемых статусов, но в целом использовать можно.

    Умеет бекапить/восстанавливать и т.д.

    # Restoring the DB for Percona Server 
    0) time ./myXtraBackup.sh --job=restore --database="monitoring" --path=/root/backup/streams/ --dest=/root/backup/data/ --log=/root/backup/logs/restore.log --do-not-delete --stream=tar --export
    --
    1) p=`pwd`; for tbl in $(ls -1); do echo "Processing $tbl"; mysql zabbix18 <  ${p}/${tbl}; done;
    2) for TABLE in $(echo "show tables" | mysql -B -N zabbix18); do echo "Discarding table ${TABLE}"; echo "set FOREIGN_KEY_CHECKS=0; ALTER TABLE ${TABLE} DISCARD TABLESPACE" | mysql -B -N zabbix18; done
    3) rsync -rvP --include="*/" --include='*.ibd' --include='*.exp' --exclude='*' /home/restore/full/zabbix18/ /var/lib/mysql/zabbix18/
    4) chown mysql:mysql /var/lib/mysql/zabbix18
    5) for TABLE in $(echo "show tables" | mysql -B -N zabbix18); do echo "Importing table ${TABLE}"; echo "set FOREIGN_KEY_CHECKS=0; ALTER TABLE ${TABLE} IMPORT TABLESPACE" | mysql -B -N zabbix18; done
    
    
  • Видео звонки между терминалами Aastra 8000i через IP-PBX Asterisk
    0
    Как-то дороговато за полтора килобакса покупать железку :(
  • HipHop VM: разведка боем под Debian 7 + Nginx + Symfony2
    0
    кто хочет поюзать на Красных Шапках 6 — ставим EPEL и идём качать 198.204.229.178/forgottenbooks.repo
    Только что собрал пакет из Hiphop-php транка.

    Сервак простоит скорее всего не очень долго, заказчик юзает его для какой-то своей очень временной цели.
    В приципе можно wget'ом рекурсивно выкачать контент и поднять у себя (createrepo --update /path/to/RPMS/) -на сейчас там всего чуть более 700Мб.

    Да, кстате. Есть поделка от индуса, но в ней столько г… внутри.
    Для тех, кто сильно параноидальный может взять SRC RPM, перекачать зановол сорцы и собрать ручками.
    Я потратил на секс 14 часов.
  • Приложение Payoneer для iOS и Android готово
    0
  • Приложение Payoneer для iOS и Android готово
    0
    Screenshot 2013 07 24 17 49 54
  • Приложение Payoneer для iOS и Android готово
    0
    У меня приложение весь день не работает, выбрасывает Server Error. Invalid input.

    И все, ничего больше
  • Папа Франциск будет раздавать индульгенции через Твиттер
    –10
    Вот только хотел написать, а опередили пока логинился
  • Astra: где стоит применять?
    0
    Кстате да, вроде как кричали что Хастлер и Блу Хастлер сменит криптографию и всё — баста…
    P.S.: Я свой Skystar2 подарил одной сетке, она теперь с него IPTV делает :)
    Использует mumudvb.
  • Development Environment при помощи Vagrant и Chef
    0
    А кому лень всё делать — идём сюда: puphpet.com
  • Реализация работы с факсами в asterisk
    0
    Спасибо за пример. Попробуем прикрутить на FreePBX сегодня
  • Сказ о том, как мы карту с биллингом дружили
    0
    Я сейчас пытаюсь приучить Яндекс-карты к Заббиксу. Пока показывает точки с проблемами на карте.
    Хочу ещё добавить возможность нанесения коммутационных линий связи, ну, возможно ещё некоторые фичи.
    Начал всё один парень здесь, я продолжаю эпопею на github
  • NoName Framework или Как я велосипед изобретал
    0
    Даешь код на github?
  • GPS Updater — ускоряем скорость фикса GPS под Android без мобильного Интернета
    +3
    А можно всё-таки немного технических деталей: Что именно делает программа? Точнее КАК она это делает?
  • Экспорт виртуальных машин из VirtualBox в AWS Amazon
    0
    В этом случае получается S3-тип машины. При перезагрузке все изменения на ней удаляются.

    Что я делал — это с помощью dd копировал образ моей виртуалки на блочное EBS устройство. после чего отмонтировал это устройство и зарегистрировал как EBS AMI. Короче, много телодвижений :)
  • Экспорт виртуальных машин из VirtualBox в AWS Amazon
    0
    Если делать с нуля, то я в своё время создавал файл забитый нулями, создавал в нём файловую систему и ставил необходимый набор пакетов (через yum для RHEL, Убунты делать мне не приходилось). Далее делал из этого S3 имейдж, потом конвертил в EBS.
  • Экспорт виртуальных машин из VirtualBox в AWS Amazon
    +2
    А не-мелкомягкие машинки заимпортить можно?
  • Как пополнить баланс карты Payoneer
    0
    Вот надо бы добавить эту ссылку на сайт Пионера
  • Как пополнить баланс карты Payoneer
    0
    RitaPayoneer, может и мне перепадёт капельку внимания по поводу PayPal и Украины?
  • Как пополнить баланс карты Payoneer
    0
    Похожая ситуация для жителей Украины и Paypal. Есть у меня US Payment Service от пионера, а на страничке Пейпала нет опции подключения вывода средств на банковский аккаунт.

    Сразу мне написал Оскар:
    Reference number: LTK12129070744057X Subject: Re: Start receiving money via US payment service Dear Andrii, Thank you for your email. Once signed in to your PayPal account, go to the “Profile” menu and select “Add or Edit US Bank Account.” You will then need to enter your US Payment Service details, which can be found on your My Account page. Sincerely, Oscar

    На что я написал:
    Hello Payoneer. I don't have "Add or Edit US Bank Account" option (see pic 001.png):
    image
    When I choose "Add/Edit Bank Account", I receive an error (like on pic 002.png):


    На что мне ответил Давид:
    Reference number: LTK12129070744057X
    Subject: Re: Start receiving money via US payment service
    
    Dear Andrii,
    
    You will have to contact Paypal about this issue.
    Tell them that you have an American bank account. Ask how can you link it to your Paypal account.
    
    Sincerely,
    David
    Payoneer Customer Support
    


    Я так понимаю, Украине и PayPal хорошо вместе никак не будет? Даже если Payoneer даст US Payment Service?
  • Никогда не отвлекай программиста
    –30
    Это всё контактик! :)
  • Реализация Exim + OpenDKIM для массовых рассылок
    +3
    Если доменов много, то делаю так (у меня на Ubuntu 10.04 стоит dk-milter и OpenDKIM):
    /etc/default/opendkim
    # Command-line options specified here will override the contents of
    # /etc/opendkim.conf. See opendkim(8) for a complete list of options.
    #DAEMON_OPTS=""
    #
    # Uncomment to specify an alternate socket
    # Note that setting this will override any Socket value in opendkim.conf
    SOCKET="inet:10035@localhost" # listen on loopback on port 8891 - Ubuntu default
    


    /etc/opendkim.conf
    # This is a basic configuration that can easily be adapted to suit a standard
    # installation. For more advanced options, see opendkim.conf(5) and/or
    # /usr/share/doc/opendkim/examples/opendkim.conf.sample.
    
    ##
    ## opendkim.conf -- configuration file for OpenDKIM filter
    ##
    ADSPAction              Continue
    ADSPNoSuchDomain        Yes
    AutoRestart             Yes
    AutoRestartRate         10/1h
    Canonicalization        simple/simple
    ExternalIgnoreList      refile:/etc/mail/opendkim/trusted-hosts
    InternalHosts           refile:/etc/mail/opendkim/trusted-hosts
    KeyTable                refile:/etc/mail/opendkim/keyTable
    LogWhy                  Yes
    On-Default              accept
    On-BadSignature         accept
    On-DNSError             tempfail
    On-InternalError        accept
    On-NoSignature          accept
    #On-Security             tempfail
    On-Security             accept
    PidFile                 /var/run/opendkim/dkim-milter.pid
    SignatureAlgorithm      rsa-sha1
    SigningTable            refile:/etc/mail/opendkim/signingTable
    Socket                  inet:10035@127.0.0.1
    Syslog                  Yes
    SyslogSuccess           Yes
    TemporaryDirectory      /tmp
    UMask                    000
    UserID                  opendkim:postfix
    #X-Header                Yes
    


    /etc/default/dk-filter
    USER="postfix"
    GROUP="mail"
    SOCKET="inet:10034@127.0.0.1"
    
    SIGNING_DOMAIN="/etc/mail/domainkeys/domains"
    KEYFILE="/etc/mail/domainkeys/keys"
    SELECTOR_NAME="mail"
    SIGNER=yes
    VERIFIER=yes
    CANON=simple
    #REJECTION="bad=r,dns=t,int=t,no=a,miss=r"
    REJECTION="bad=r,dns=t,int=a,no=a,miss=r"
    HOSTLIST="/etc/mail/domainkeys/trusted-hosts"
    EXTRA_ARGS="-A -H -k -l -D -i ${HOSTLIST} -I ${HOSTLIST}"
    #========================================================
    MODES=
    if [ x${SIGNER:0:1} == "xy" -o x${SIGNER:0:1} == "xY" ]; then
        MODES=${MODES}s
    fi
    #if [ x${VERIFIER:0:1} == "xy" -o x${VERIFIER:0:1} == "xY" ]; then
    #    MODES=${MODES}v
    #fi
    [ ! -z "$MODES" ] && MODES="-b $MODES"
    #========================================================
    DAEMON_OPTS="-d ${SIGNING_DOMAIN} -s ${KEYFILE} -S ${SELECTOR_NAME} ${MODES} -c ${CANON} -C ${REJECTION} ${EXTRA_ARGS}"
    


    Ну, и генерация ключиков
    #!/bin/bash
    
    if [ -z $1 ]; then
        echo "The domainname is not specified"
        exit 1
    fi
    
    PREFIX=/etc/mail
    #PREFIX=/opt/postfixadmin-hooks/mail
    
    # Location of OpenSSL binary (whereis -b openssl)
    OPENSSL=/usr/bin/openssl
    DOMAIN=$1
    USE_DKIM=1
    USE_DOMAINKEYS=1
    SELECTOR=mail
    MAILTMPFFILE=/tmp/mail-`date "+%s"`
    POSTMASTER="postmaster@example.com"
    ADMINMAIL="tech@example.com"
    SENDMAIL="/usr/sbin/sendmail"
    
    # Create the directories for keys
    if [ -d ${PREFIX}/.privatekeys/${DOMAIN} ]; then
        echo "Directory for private keys for the domain ${DOMAIN} exists."
        exit 1
    else
        mkdir --mode=755 -p ${PREFIX}/.privatekeys/${DOMAIN}
    fi
    
    if [ -d ${PREFIX}/.publickeys/${DOMAIN} ]; then
        echo "Directory for private keys for the domain ${DOMAIN} exists."
        exit 1
    else
        mkdir --mode=755 -p ${PREFIX}/.publickeys/${DOMAIN}
    fi
    
    if [[ ${USE_DKIM} -eq "1" || ${USE_DOMAINKEYS} -eq "1" ]]; then
        echo "Generating the private key for ${DOMAIN}"
        ${OPENSSL} genrsa -out ${PREFIX}/.privatekeys/${DOMAIN}/${SELECTOR} 1024 > /dev/null
        echo "Generating the public key for ${DOMAIN}"
        ${OPENSSL} rsa -in ${PREFIX}/.privatekeys/${DOMAIN}/${SELECTOR} -out ${PREFIX}/.publickeys/${DOMAIN}/${SELECTOR}.public.key -pubout -outform PEM > /dev/null
        # Prepare the key
        keydata=$(grep -v '^-' ${PREFIX}/.publickeys/${DOMAIN}/${SELECTOR}.public.key)
        pubkey=$(echo ${keydata} | sed 's/ //g')
    fi
    
    # Process dk-milter
    if [ ${USE_DKIM} -eq "1" ]; then
        if [ -d ${PREFIX}/opendkim/keys/${DOMAIN} ]; then
    	echo "DKIM directory for private keys for the domain ${DOMAIN} exists."
    	exit 1
        else
    	mkdir --mode=755 -p ${PREFIX}/opendkim/keys/${DOMAIN}
    	install --owner=opendkim --group=opendkim --mode=400 ${PREFIX}/.privatekeys/${DOMAIN}/${SELECTOR} ${PREFIX}/opendkim/keys/${DOMAIN}/${SELECTOR}
    	echo "${SELECTOR}._domainkey.${DOMAIN} ${DOMAIN}:${SELECTOR}:${PREFIX}/opendkim/keys/${DOMAIN}/${SELECTOR}" >> ${PREFIX}/opendkim/keyTable
    	echo "*@${DOMAIN} ${SELECTOR}._domainkey.${DOMAIN}" >> ${PREFIX}/opendkim/signingTable
    	/usr/sbin/service opendkim restart
        fi
    else
        echo "DKIM signature is not used. Skipping."
    fi
    
    # Process Domainkeys
    if [ ${USE_DOMAINKEYS} -eq "1" ]; then
        if [ -d ${PREFIX}/domainkeys/privatekeys/${DOMAIN} ]; then
    	echo "Domainkeys directory for private keys for the domain ${DOMAIN} exists."
    	exit 1
        else
    	mkdir --mode=755 -p ${PREFIX}/domainkeys/privatekeys/${DOMAIN}
    	install --owner=postfix --group=root --mode=400 ${PREFIX}/.privatekeys/${DOMAIN}/${SELECTOR} ${PREFIX}/domainkeys/privatekeys/${DOMAIN}/${SELECTOR}
    	echo "*@${DOMAIN}:${PREFIX}/domainkeys/privatekeys/${DOMAIN}/${SELECTOR}" >> ${PREFIX}/domainkeys/keys
    	echo "${DOMAIN}" >> ${PREFIX}/domainkeys/domains
    	/usr/sbin/service dk-filter restart
        fi
    else
        echo "Domainkeys signature is not used. Skipping."
    fi
    
    echo "From: Postfix Admin <${POSTMASTER}>" >> ${MAILTMPFFILE}
    echo "To: ${ADMINMAIL}" >> ${MAILTMPFFILE}
    echo "Subject: Domain ${DOMAIN} was added, DNS intervention is needed" >> ${MAILTMPFFILE}
    echo "MIME-Version: 1.0" >> ${MAILTMPFFILE}
    echo "Content-Type: text/plain; charset=us-ascii" >> ${MAILTMPFFILE}
    echo "X-Priority: 1" >> ${MAILTMPFFILE}
    echo "X-MSMail-Priority: High" >> ${MAILTMPFFILE}
    echo "" >> ${MAILTMPFFILE}
    echo "Publish these NS records:" >> ${MAILTMPFFILE}
    echo "_domainkey.${DOMAIN}              IN      TXT \"o=-\"" >> ${MAILTMPFFILE}
    echo "_adsp._domainkey.${DOMAIN}        IN      TXT \"dkim=all\"" >> ${MAILTMPFFILE}
    echo "${SELECTOR}._domainkey.${DOMAIN}  IN      TXT \"v=DKIM1; k=rsa; p=${pubkey}\"" >> ${MAILTMPFFILE}
    echo "" >> ${MAILTMPFFILE}
    echo "" >> ${MAILTMPFFILE}
    echo "" >> ${MAILTMPFFILE}
    echo "--" >> ${MAILTMPFFILE}
    echo "Thanks," >> ${MAILTMPFFILE}
    echo "Postfix Administrator                         mailto:${POSTMASTER}" >> ${MAILTMPFFILE}
    
    cat ${MAILTMPFFILE} | ${SENDMAIL} -f ${POSTMASTER} -t
    unlink ${MAILTMPFFILE}
    


    Связка работает с постфиксом, но двумя взмахами напильника можно приловчить на Exim тоже.
    Да, кстате… Товарищи, если шлёте почту на буржуев, то не забывайте про Feedback Loops:
    mail.live.com/mail/services.aspx#JMRPP
    feedbackloop.yahoo.net/
    fbl.hostedemail.com/
    postmaster.aol.com/SupportRequest.php
    feedback.comcast.net/

    После этого к вам начнут поступать отчёты в т.н. формате ARF (вложения типа message/feedback-report).
    Также немаловажно переваривать bounce-messages (т.е. отлупы о том, что письма не доставлены адресату по тем или иным причинам (не верно указан адрес получателя, на получателе закончилось место и т.д. — можно заюзать тот же перловский Mail::DeliveryStatus::BounceParser ).

    И сообщите им же, что вы хотите слать МНОГО почты:
    postmaster.aol.com/cgi-bin/whitelist/whitelist_guides.pl
    help.yahoo.com/l/us/yahoo/mail/postmaster/bulkv2.html
  • AWS: Копии образов EBS
    +1
    Ура товарищи!
  • Централизованная система обновления пакетов в Ubuntu
    0
    Я apticron юзаю для Ubuntu/Debian и yum-updatesd для CentOS/RHEL
  • Укрощаем трёхглавого дракона или как работает аутентификация в Bacula
    0
    В следующей статье сто процентов нужно рассказать про механизм того, что такое пулы, сторейджи и т.д.

    Кстате, при не правильной их настройке ( ну, точнее сказать по народному: корявой) рискуем получить что в конкретную единицу времени будет выполняться только одно задание. А если еще и лимитированние места используется и это место закончилось — то наступит вообще ступор для всех заданий, пока или не увеличить квоту или не сделать recycle хранилищу.
  • Опера не спешит закрывать уязвимость?
    0
    16.0.2 то же самое
  • Опера не спешит закрывать уязвимость?
    +1
    Фаерфокс 16.0.1
    image
  • Попытка номер раз создать почти идеальный htaccess
    0
    … Для тех у кого всё получилось, идём на webpagetest.org мерять красоту до и после.
    Кстате, не мешало бы сказать копи-пастерам что
    <IfModule mod_rewrite.c>
        RewriteEngine on
        RewriteBase /
        RewriteCond %{HTTP_HOST} ^black-web
        RewriteRule (.*) http://www.black-web.ru/$1 [R=301,L]
        RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /index\.php\ HTTP/
        RewriteRule ^index\.php$ http://www.black-web.ru/ [R=301,L]
    </IfModule>
    

    … может не работать не так как ожидаеться во всяких самописных штуках ( я не про тех, у кого Joomla/Wordpress/Drupal/etc)
  • Free-lance.ru сошёл с ума
    0
    Из личного опыта: сразу напрягало что что-то меня там мониторит, но потом просто систематизировало моё время. Если на прошлой работе я читал Хабр, то сейчас читаю хабр по пути на работу, в обеденное время или вечером перед сном.

    В отдельном случае когда коллега кинул ссылку на топик, который очень похож на то с чем мы сталкиваемся в своём проекте.
  • Free-lance.ru сошёл с ума
    0
    Здесь много противоречий: код качественный — в новинку, и т.д.
    Хорошие вещи быстро на тяп-ляп не делаются. Если это действительно нужно сделать (быстро и на тяп-ляп, то это сразу нужно обговорить, соответственно и сроки тоже).

    Можно дать исполнителю сделать тестовое задание (например моих сотрудников тестировали менее оплачиваемой работой в тех же проектах, но давали не такой большой объём работы: вместо написания модуля к системе — написание метода для модуля например, и тому подобное).

    Можно конечно нанять индуса/китайца/филиппинца который всё сделает, но наши суровые программеры потом переделают :)
  • Free-lance.ru сошёл с ума
    0
    Privacy policy, пункт 2,4,1:
    2.4.1  Posting a Job.
    All jobs posted to oDesk must be in English and not contain any information enabling or requesting contact or payment outside of the oDesk Platform.
    


    Потом, когда поднимается abuse от заказчика или исполнителя, вся переписка на виду и решение принимается довольно таки быстро.
    В отличии от фриланса.ру (не знаю как сейчас) там почасовые контракты гарантировано будут оплачены. Мне как испольнителю похеру на комиссию, котораю будет снята с заказчика — мне главное получить деньги за работу. В качестве работы заказчик может убедиться просматривая мои скриншоты/программный код/etc.