@jaime.pinto: thanks for your help BUT you forgot to mention the most important info: SUBMIT!
To let Scalix only accept mails from certain servers, you'd simply have to add e.g.:
SUBMIT Accept 200.200.200.200 -> Accept incoming mails from this IP
SUBMIT Log_Reject ALL -> Block and log connection attempts from any other IP than listed above
Let me explain to you briefly my set up:
[COLO server: 200.200.200.200] --INTERNET--> [Scalix server: 192.168.1.2] <--INTRANET--> CLIENTS
I have the COLO server listed as MX record in the DNS; like this mail coming from the outside world is greylisted and scanned for viruses by the COLO Server and then relayed to the local Scalix server which does spam and virus checks again. 99,x% of the spam is rejected on COLO level because of the greylisting so scalix can focus on what it has been set up for...
One could go a step further and add some kind of escalation service which checks if the COLO server is still alive and if not:
1st update MX settings with Scalix server ip and
2nd update smtpd.cfg by adding a line: SUBMIT Log_Reject DNSBL,**theChosenDNSBLservices**,ALL and commenting the lines mentioned above
3rd restarting smtpd
Like this you can make sure that you're still receiving mails though your "primary MX" has crashed or is down for maintenance or whatever reason.
Now you could say, why should I do this and not simply having a secondary MX listed? Simple answer: Greylisting means a plain reject of a mail at first delivery attempt. If you'd have a secondary MX, all mail services would try to push its mail to this one instead of a retry to the primary MX. Greylisting wouldn't work then anymore if you don't have SQLgrey running and all MX servers check against a central greylist table.
PS: a fairly good explaination is in "Scalix_Setup_Guide_11.0.2.pdf"