mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-17 14:37:02 +00:00
When we permanently failed to deliver to one or more recipients, send delivery status notifications back to the sender. To do this, we need to extend a couple of internal structures, to keep track of the original destinations (so we can include them in the message, for reference), and the hostname we're identifying ourselves as (this is arguable but we're going with it for now, may change later).
54 lines
1.1 KiB
Go
54 lines
1.1 KiB
Go
// addtoqueue is a test helper which adds a queue item directly to the queue
|
|
// directory, behind chasquid's back.
|
|
//
|
|
// Note that chasquid does NOT support this, we do it before starting up the
|
|
// daemon for testing purposes only.
|
|
package main
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"io/ioutil"
|
|
"os"
|
|
"time"
|
|
|
|
"blitiri.com.ar/go/chasquid/internal/queue"
|
|
)
|
|
|
|
var (
|
|
queueDir = flag.String("queue_dir", ".queue", "queue directory")
|
|
id = flag.String("id", "mid1234", "Message ID")
|
|
from = flag.String("from", "from", "Mail from")
|
|
rcpt = flag.String("rcpt", "rcpt", "Rcpt to")
|
|
)
|
|
|
|
func main() {
|
|
flag.Parse()
|
|
|
|
data, err := ioutil.ReadAll(os.Stdin)
|
|
if err != nil {
|
|
fmt.Printf("error reading data: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
|
|
item := &queue.Item{
|
|
Message: queue.Message{
|
|
ID: *id,
|
|
From: *from,
|
|
To: []string{*rcpt},
|
|
Rcpt: []*queue.Recipient{
|
|
{*rcpt, queue.Recipient_EMAIL, queue.Recipient_PENDING, ""},
|
|
},
|
|
Data: data,
|
|
},
|
|
CreatedAt: time.Now(),
|
|
}
|
|
|
|
os.MkdirAll(*queueDir, 0700)
|
|
err = item.WriteTo(*queueDir)
|
|
if err != nil {
|
|
fmt.Printf("error writing item: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
}
|