mirror of
https://github.com/foxcpp/maddy.git
synced 2025-04-05 05:57:39 +03:00
msgpipeline: Allow to chain pipelines
This allows for some complex but useful configurations, such as making decision on delivery target based on the result of per-destination address rewriting. One example where that can be useful is aliasing local address to a remote address in a way that can't make the server an open relay.
This commit is contained in:
parent
ed2a7c28e2
commit
af4f180503
6 changed files with 72 additions and 5 deletions
|
@ -476,14 +476,12 @@ func (dd *msgpipelineDelivery) getDelivery(tgt module.DeliveryTarget) (*delivery
|
|||
|
||||
deliveryObj, err := tgt.Start(dd.msgMeta, dd.sourceAddr)
|
||||
if err != nil {
|
||||
dd.log.Debugf("tgt.Start(%s) failure, target = %s (%s): %v",
|
||||
dd.sourceAddr, tgt.(module.Module).InstanceName(), tgt.(module.Module).Name(), err)
|
||||
dd.log.Debugf("tgt.Start(%s) failure, target = %s: %v", dd.sourceAddr, objectName(tgt), err)
|
||||
return nil, err
|
||||
}
|
||||
delivery_ = &delivery{Delivery: deliveryObj}
|
||||
|
||||
dd.log.Debugf("tgt.Start(%s) ok, target = %s (%s)",
|
||||
dd.sourceAddr, tgt.(module.Module).InstanceName(), tgt.(module.Module).Name())
|
||||
dd.log.Debugf("tgt.Start(%s) ok, target = %s (%s)", dd.sourceAddr, objectName(tgt))
|
||||
|
||||
dd.deliveries[tgt] = delivery_
|
||||
return delivery_, nil
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue