mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-19 14:57:04 +00:00
aliases: Implement "via" aliases
This patch implements "via" aliases, which let us explicitly select a server to use for delivery. This feature is useful in different scenarios, such as a secondary MX server that forwards all incoming email to a primary. For now, it is experimental and the syntax and semantics are subject to change.
This commit is contained in:
@@ -89,6 +89,7 @@ type deliverRequest struct {
|
||||
From string
|
||||
To string
|
||||
Data []byte
|
||||
Via []string
|
||||
}
|
||||
|
||||
// TestCourier never fails, and always remembers everything.
|
||||
@@ -102,7 +103,17 @@ type TestCourier struct {
|
||||
// Deliver the given mail (saving it in tc.Requests).
|
||||
func (tc *TestCourier) Deliver(from string, to string, data []byte) (error, bool) {
|
||||
defer tc.wg.Done()
|
||||
dr := &deliverRequest{from, to, data}
|
||||
dr := &deliverRequest{from, to, data, nil}
|
||||
tc.Lock()
|
||||
tc.Requests = append(tc.Requests, dr)
|
||||
tc.ReqFor[to] = dr
|
||||
tc.Unlock()
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (tc *TestCourier) Forward(from string, to string, data []byte, servers []string) (error, bool) {
|
||||
defer tc.wg.Done()
|
||||
dr := &deliverRequest{from, to, data, servers}
|
||||
tc.Lock()
|
||||
tc.Requests = append(tc.Requests, dr)
|
||||
tc.ReqFor[to] = dr
|
||||
@@ -133,6 +144,10 @@ func (c dumbCourier) Deliver(from string, to string, data []byte) (error, bool)
|
||||
return nil, false
|
||||
}
|
||||
|
||||
func (c dumbCourier) Forward(from string, to string, data []byte, servers []string) (error, bool) {
|
||||
return nil, false
|
||||
}
|
||||
|
||||
// DumbCourier always succeeds delivery, and ignores everything.
|
||||
var DumbCourier = dumbCourier{}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user