postfix and dovecot 2.0.9 rejecting over quota user on smtp stage
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
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
Measure Response Time Of SMTP Connections Using Perl
Normally, to check if my server smtp connection alive, I just do telnet to port 25 from my workstation. if the smtp banner displayed, it means that the connection to the smtp server is good. I have done this for years. 😆
$ telnet smtp.example.com 25 Trying xxx.xxx.xx.xxx... Connected to xxx.xxx.xx.x. Escape character is '^]'. 220 smtp.example.com ESMTP Postfix ehlo host.example.com 250-smtp.example.com 250-PIPELINING 250-SIZE 52428800 250-ETRN 250-STARTTLS 250-AUTH LOGIN PLAIN 250-AUTH=LOGIN PLAIN 250-ENHANCEDSTATUSCODES 250-8BITMIME 250 DSN quit 221 2.0.0 Bye Connection closed by foreign host.
Although many tools that are deliberately created for this purpose, still, I prefer just using telnet to port 25. I have made a simple perl script, with the intention that the things I do for years manually can be done automatically.
Modules required:
Compiling Postfix-2.7.0 As RPM Package
I used to have Simon J. Mudd when building postfix rpm package, but seems he’s not releasing official postfix 2.7.0 yet, here’s a way for impatient one
First make RedHat Linux the standard directory structure in our homedir
$ mkdir rpmbuild $ mkdir -p rpmbuild/{BUILD,RPMS,SOURCES,SPECS,SRPMS,tmp}
Create .rpmmacros file
$ vi .rpmmacros
%_topdir %(echo $HOME)/rpmbuild %_tmppath %(echo $HOME)/rpmbuild/tmp
Create tempoerary working directory for postfix
$ mkdir postfix $ cd postfix
Postfix Smtp Outgoing IP Rotator using iptables
This is the scheme
e.g:
I got 5 Public IPs. i’m Gonna configure them, so Postfix can use multiple interfaces/ips for outgoing smtp connections.
First we need creating Interface aliases for those 5 public IPs.
In my system, using fedora:
# cd /etc/sysconfig/network-scripts/ # cp ifcfg-eth0 ifcfg-eth0:1
Edit ifcfg-eth0:1
# vi ifcfg-eth0\:1 DEVICE=eth0 <-- default device HWADDR=XX:XX:XX:XX:XX:XX ONBOOT=yes TYPE=Ethernet BOOTPROTO=none IPADDR=202.XXX.XX.2 <-- default eth0 IP address PREFIX=24 GATEWAY=202.XXX.XX.1 DNS1=202.XXX.XX.XX
Change DEVICE and IPADDR parameters
Postfix smtp outgoing load balancing
I got good workaround for balancing smtp outgoing from postfix mailing list archives(not using expensive real load balancer). suppose we have 4 smtp servers for outgoing email, and we need to configure/load balance like this:
+------------+
| |
+----------> smtp backend a -------->| |
| | |
clients --------> smtp lb -----> smtp backend b -------->| Intenet |
| | |
+----------> smtp backend c -------->| |
| |
+------------+
Here’s the configuration :
Extended SMTP
Extended SMTP
Extended SMTP (ESMTP), sometimes referred to as Enhanced SMTP,is a definition of protocol extensions to the Simple Mail Transfer Protocol standard.
The extension format was defined in IETF publication RFC 1869 (1995) which established a general structure for all existing and future extensions.
ESMTP defines consistent and manageable means by which ESMTP clients and servers can be identified and servers can indicate supported extensions.
Extensions
The main identification feature is for ESMTP clients to open a transmission with the command EHLO (Extended HELLO), rather than HELO.
Some relatively common keywords (not all of them corresponding to commands) used today are: