postfix, auto postmap using inotify
Arduino nano, ENC28J60 Ethernet shield and 4 channel relay
i have already made this project previuosly using arduino uno, wiznet w5100 ethernet shield and 4 channel relay shield. But using Arduino nano + ENC29J60 lot cheaper. not mention it has smaller size. Once you get this badboy online on your network, you can control every device in your house using your smartphone or any gadget you have(that rely on your coding skill, ofcourse).
let’s the fun begin 🙂
wait, as usual i don’t do lots of talk so here’s the schematic and arduino code.
Change Password Using courierpassd on dovecot mysql
When you have webmail separated from your pop3/imap4 server things can be complicated if you don’t have direct access to mysql server over the network. using poppassd will not solving the problem if you’re using mysql, pgsql or ldap backend for storing user information. because (AFAIK) it only can access/change user/password on passwd/shadow file.
using courierpassd allows us to access or modify pop3/imap4 user information store in mysql, pgsl or ldap backend. one caveat, courierpassd using courier-authlib API in order to be able accessing those database backend. we have to install or build from source. courierpassd use the same protocol as poppassd does.
i’m using centos and this is how i do it.
first using non priviledged user cccount, create rpm build environment.
$ mkdir -p ~/rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS} $ echo '%_topdir %(echo $HOME)/rpmbuild' >> ~/.rpmmacros mkdir $HOME/rpm mkdir $HOME/rpm/SOURCES mkdir $HOME/rpm/SPECS mkdir $HOME/rpm/BUILD mkdir $HOME/rpm/SRPMS mkdir $HOME/rpm/RPMS mkdir $HOME/rpm/RPMS/i386 echo '%_topdir $HOME/rpm' >> $HOME/.rpmmacros
download courier-authlib and courierpassd source
wget http://prdownloads.sourceforge.net/courier/courier-authlib-0.60.2.tar.bz2 wget http://www.arda.homeunix.net/?ddownload=375 -O courierpassd.1.1.2.tar.gz
compile and install courier-authlib
$rpmbuild -ta courier-authlib-0.60.2.tar.bz2 $sudo rpm -ivh /home/youruser/rpm/RPMS/x86_64/courier-authlib-0.66.4-1.el6.x86_64.rpm $sudo rpm -ivh /home/youruser/rpm/RPMS/x86_64/courier-authlib-devel-0.66.4-1.el6.x86_64.rpm $sudo rpm -ivh /home/youruser/rpm/RPMS/x86_64/courier-authlib-mysql-0.66.4-1.el6.x86_64.rpm
extract courierpassd, compile and install
#tar xzf courierpassd.1.1.2.tar.gz #cd courierpassd-1.1.2 #./configure #make #make install
you want be able to access this courierpassd from other server on the network. people using xinet.d usually.
#vi /etc/xinetd.d/courierpassd service courierpassd { disable = no socket_type = stream protocol = tcp port = 106 wait = no user = root server = /usr/sbin/courierpassd instances = 10 only_from = 192.168.0.101 127.0.0.1 }
ESP8266 NodeMCU DHT22 and thingspeak API
postfix and dovecot 2.0.9 rejecting over quota user on smtp stage
How To Make A Propeller Clock
Once upon a time, lifes goes on as usual, boring. Until one day my friend showing me a weird clock on youtube. i said “wow, that was awesome!”, “how it works?”, “i should make one!”. Basically, i have experienced on electronic DIY stuffs. i started to figure out on how to make it, lots of information found. so basicaly, propeller clock based on POV (Persistence of vision)
http://en.wikipedia.org/wiki/Persistence_of_vision
The clock’s graph formed by cheating human eyes, one array of leds burst on constant interval/delay in one motor rotation, continuously (in this case  divided to 360 degree in one rotation, can be more for higher resolution).
After i’ve found, understand, (and yet still confused on how it works :P). i started making prototypes with existing MCU module (atmega8535), wired to array of 8 leds. it works, and not good!! it’s too heavy, no index reference, the text is very unstable. i need to design new board which is lighter and throw out all unnecessary components. there are two web site that i’m using as references, when building this clock.
http://www.microsyl.com/index.php/2010/03/18/propeller-clock/
i used the codes from there with lots of modification, original code is writen using ICCAVR, i converted it to AVR Studio.
http://www.oocities.org/tjacodesign/propclock/propclock.html
i used his isolated power supply, to power up the propeller clock module.
For remote control, it was stolen from here: 😀
http://www.dharmanitech.com/2009/01/ir-remote-controlled-car-pwm-motor.html
picture
Simple Email Blacklist Using Spamassassin Plugin And RBLDNSD
This is not new idea, actually. someone at spamassassin plugin developers have been made before. basically, the idea was put email addresses in RBLDNSD zone dnset format, ie:
Email user@example.com RBLDNSD user.example.com
So, we replace @ sign into dot (.) sign. that way, we can save the email addresses into the RBLDNSD dnset zone.
RBLDNSD part:
create emailbl zone, meta information
zone
:127.0.0.4:DNSBL. $ - Not receiving email right now. example.user.gmail.com example.user.rediffmail.com
meta
$NS 1w ns.example.com ns.example.com $SOA 1w ns.example.com admin.example.com 0 2h 2h 1w 1h $DATASET generic @ @ A 1.2.3.4 @ MX 10 mx.example.com @ TXT "example email blocklist"
in /etc/sysconfig/rbldnsd
RBLDNSD="dsbl -r/var/lib/rbldns/dsbl -t 300 -b 1.2.3.4 \ emailbl.example.com:combined:meta,emailbl "
ofcourse we should delegate the subdomain emailbl.example.com in example.com authoritative nameserver
; subdomain delegation emailbl.example.com. IN NS ns.example.com. ns.example.com. IN A 1.2.3.4
start rbldnsd service
service rbldnsd start
Nginx As imap4/pop3 Proxy Using Apache As Auth Server Backend
It’s been a long times since i wrote my last article, i’ve been bussy with real life things.
As usual, I’ll get right to the subject of how to configure nginx as POP3/IMAP proxy server.
Nginx IP = 192.168.1.1 Postfix User Database IP = 192.168.1.5 (postfix + courier server + apache backend)
nginx server configuration
mail { server_name mail-proxy.example.com; # apache external backend auth_http 192.168.1.5:8081/auth.php; proxy on; proxy_pass_error_message on; imap_capabilities "IMAP4rev1" "UIDPLUS" "IDLE" "LITERAL +" "QUOTA"; pop3_auth plain apop cram-md5; pop3_capabilities "LAST" "TOP" "USER" "PIPELINING" "UIDL"; ssl_certificate /etc/nginx/ssl_keys/db.mail-proxy.crt; ssl_certificate_key /etc/nginx/ssl_keys/db.mail-proxy.key; ssl_session_timeout 5m; ssl_protocols SSLv2 SSLv3 TLSv1; ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP; ssl_prefer_server_ciphers on; server { listen 143; protocol imap; starttls on; auth_http_header X-Auth-Port 143; auth_http_header User-Agent "Nginx POP3/IMAP4 proxy"; } server { protocol pop3; listen 110; starttls on; pop3_auth plain; auth_http_header X-Auth-Port 110; auth_http_header User-Agent "Nginx POP3/IMAP4 proxy"; } server { listen 993; ssl on; protocol imap; auth_http_header X-Auth-Port 993; auth_http_header User-Agent "Nginx POP3/IMAP4 proxy"; } server { protocol pop3; listen 995; ssl on; pop3_auth plain; auth_http_header X-Auth-Port 995; auth_http_header User-Agent "Nginx POP3/IMAP4 proxy"; } }
Postfix Changing Outgoing IP By Time Interval Using TCP_TABLE And Perl
Someone asked me if i can make a perl scripts that can change the ip address based on time interval, say he want ip address 1.2.3.4 used within one hour, if done next ip address will be used within next one hour..and so on. when it came to highest number of ip address in array, they will be reset back to the start. first i suggest him to look at the articles i wrote. But then i decide to write Perl script which was made for the purposes mention above.
here we are..
Postfix section:
master.cf 127.0.0.1:2527 inet n n n - 0 spawn user=nobody argv=/etc/postfix/ip_by_time.pl ip1 unix - - n - - smtp -o syslog_name=postfix-ip1 -o smtp_helo_name=smtp1.example.com -o smtp_bind_address=1.2.3.1 ip2 unix - - n - - smtp -o syslog_name=postfix-ip2 -o smtp_helo_name=smtp2.example.com -o smtp_bind_address=1.2.3.2 ip3 unix - - n - - smtp -o syslog_name=postfix-ip3 -o smtp_helo_name=smtp3.example.com -o smtp_bind_address=1.2.3.3 ip4 unix - - n - - smtp -o syslog_name=postfix-ip4 -o smtp_helo_name=smtp4.example.com -o smtp_bind_address=1.2.3.4 .... ....
main.cf
transport_maps = tcp:[127.0.0.1]:2527 127.0.0.1:2527_time_limit = 3600s