Received: from [192.168 Received: from localhost
nano /etc/postfix/header_checks
/^Received: from \[192\.168\..*$/ IGNORE
/^Received: from localhost .*$/ IGNORE
/^Received: from.*127\.0\.0\.1.*$/ IGNORE
Received: from [192.168 Received: from localhost
nano /etc/postfix/header_checks
/^Received: from \[192\.168\..*$/ IGNORE
/^Received: from localhost .*$/ IGNORE
/^Received: from.*127\.0\.0\.1.*$/ IGNORE
#Installing configuring Postfix/Dovecot/Spamassassin/Roundcube
I've documented the steps in short to help me reproduce all the steps. Published it here for improvement and as a reference for others. Of course feel free to comment to improve this document.
This Gist is quite big and not all details are fully explained. But if you're going to run a mailserver you should be able to fill in the missing parts. The most important are covered. But be sure to read up to understand the meaning of all the stuff you configure. Since I used a lot of references of other sources (See at the end) I left out a lot of explanation in this document.
Don't forget that I'm not a Postfix/Dovecot/Spamassasin pro either. I just got it working the way I wanted to.
Based on https://forums.cpanel.net/threads/reject-emails-with-zip-files-containing-exe-files.333101/
Find clamav database directory, on Debian/Ubuntu it is /var/lib/clamav
Create file with arbitrary filename, give it .cdb
extension.
Give it proper user and group ownership, on Debian/Ubuntu clamav:clamav
.
Paste the following content:
(function(w,d){ | |
var DATA_MAIN='assets/js/login'; | |
sc = d.createElement('script'), head = d.getElementsByTagName('head')[0]; | |
sc.setAttribute('data-main', DATA_MAIN ); | |
sc.setAttribute('async', 'true'); | |
if( !'localStorage' in w || !w.localStorage.getItem('requirejs')){ | |
sc.src="assets/js/require.min.js" | |
} else { | |
sc.innerHTML=localStorage.getItem('requirejs'); | |
} |
;(function(w,d){ | |
var head = d.head || d.getElementsByTagName('head')[0], | |
raf = w.requestAnimationFrame || | |
w.mozRequestAnimationFrame || | |
w.webkitRequestAnimationFrame || | |
w.msRequestAnimationFrame || | |
function(callback) { | |
return setTimeout(callback, 16) |
/** | |
* | |
* Usage example: | |
* | |
* $('#headerghost').css('height', $('header').outerHeight()-32); | |
* | |
* registerResizeFunction(function($header, $headerghost){ | |
* $headerghost.css('height', $header.outerHeight()-32); | |
* }, $('header'), $('#headerghost')); | |
* |
/** | |
* This is patch to famous Dustin Diaz's | |
* Smallest DomReady Ever | |
* http://dustindiaz.com/smallest-domready-ever | |
* | |
* It is executing argument function inside | |
* anonimous function specified in setTimeout | |
* | |
* That way, we can use Smallest DomReady Ever in |
/@\s*?media\s*?\(\s*?(min|max)-(width|height)\s*?:\s*?(\d+)(px|em)\s*?\)\s*?{(.*)}/gms | |
/** | |
* Only basically tested. | |
* Should match min-max-width-height number px|em and following rules. | |
* Provides capturing groups to determinate condition alongside with css. | |
* | |
* Created with help of regex101 | |
* https://regex101.com/r/zA6fX2/1 |
;(function(w,d){ | |
var fn=function(){ | |
var body = d.body || d.getElementsByTagName('body')[0]; | |
if(d.querySelectorAll) | |
var allimgs = d.querySelectorAll('img[data-src]'), allimgs_len = allimgs.length; | |
for(var i=0;i<allimgs_len;i++){ | |
allimgs[i].setAttribute('src', allimgs[i].getAttribute('data-src')); | |
} | |
} |
This script can be used in conjunction with the ISPmail tutorial and the Roundcube autoreply plugin
Create the following table in the database where you created the tables from the ISPmail tutorial.