From: Wietse Venema on
Michele Carandente:
> Hi Wietse,
> I had a look at the links that you've suggested me.
> If I've understand correctly, I don't have to use the
> 'smtpd_sender_restrictions' option, because I have to match the
> receiver and, if it's in transport_maps =
> proxy:mysql:/etc/postfix/mysql-virtual_transports.cf, then means that
> it's internal and don't need to be in queue.
>
> So I guess I need to use the option 'smtpd_recipient_restrictions'
> At the moment it is that option: smtpd_recipient_restrictions =
> permit_mynetworks, permit_sasl_authenticated,
> reject_unauth_destination
>
> So now I think I've to modify it, so that I'll tell that if the
> receiver is matching with an address of transport_maps (Internal
> email), then nothing, otherwhise put all the emails in HOLD.
>
> This is the theory. But pratically how the
> smtpd_recipient_restrictions should look like?

What problem are you trying to solve: hold mail only from
non-local clients? then use

smtpd_client_restrictions = permit_mynetworks static:hold

Something else? This would be a good time to describe what
you actually want, instead of what does "not work".

Wietse

From: Michele Carandente on
Hi Wietse,
first of all thaks for your reply.

The problem is exatly what you said before: hold mail only from
non-local clients.
I tried as you said with smtpd_client_restrictions = permit_mynetworks
static:hold (actually was like that: smtpd_recipient_restrictions =
permit_mynetworks static:HOLD, permit_sasl_authenticated,
reject_unauth_destination) but it''s putting everithing in HOLD.

Basically my configuration is not a real standard one.
I've this mailserver that must queue all external email and, when I
want, relay them to different domains (depending of the sender).
To say to postfix which email is internal, instead of use
virtual_mailbox_domains, that will consider all the emails part of
that domain as internal, I'm using transport_maps =
proxy:mysql:/etc/postfix/mysql-virtual_transports.cf, where is
pointing to a column of the mail_users database. That column will have
as value 'virtual', so postfix will know if the receiver is internal
or not.

I hope now my configuration is more understandble.

Thanks
Michele

From: Wietse Venema on
Michele Carandente:
> Hi Wietse,
> first of all thaks for your reply.
>
> The problem is exatly what you said before: hold mail only from
> non-local clients.
> I tried as you said with smtpd_client_restrictions = permit_mynetworks
> static:hold (actually was like that: smtpd_recipient_restrictions =
> permit_mynetworks static:HOLD, permit_sasl_authenticated,
> reject_unauth_destination) but it''s putting everithing in HOLD.

If Postfix holds ALL mail, then you have other hold actions in
the configuration. Get rid of them.

With:

smtpd_client_restrictions = permit_mynetworks static:hold

Postfix will HOLD mail from clients that do not match the mynetworks
setting.

Wietse

From: Michele Carandente on
Hi Noel,
thanks for your reply.
I know that unfortunately it's not a standard configuration of
Postfix, but it's the only one that solve all my problem...
Anyway I will not upgrade postfix for at least the next 2 years...

I'll try again to find a way to put emails in HOLD
automatically...otherwise I'll add a cronjob with the command:
'postsuper -h ALL'

Cheers
Michele

From: Michele Carandente on
Hi Victor,
I agree that the cron job solution is not the best one... but at the
moment it is the only one that I'm able to offer...
(Even if with a cron job every 5 seconds(for example), I'll not lose
any emails...)

As Noel Jones said before: "The documented way to tell postfix to
accept mail for a domain is to put the domain in one of
{mydestination, relay_domains, virtual_alias_domains,
virtual_mailbox_domains}. See below for some documentation links. I
don't see transport_maps listed there."

So, with my configuration, if you can suggest me a possible and better
solution I'll really appreciate it.

Thanks a lot
Michele