又到我重复造轮子的时候了
我现在(收邮件)的架构是:
mailin.io,收取邮件,然后解析成 JSON 。问题是, mailin 现在没有 retry ,也就是说,如果 webhook 挂了,你就收不到邮件了。所以我加了个 Redis 做 Queue ,另一个 Worker 做 webhook submission 。附件的话就直接上传到 S3 ,或者如果你像我一样自己跑 S3 的话,你可以上传到 S3 兼容的对象存储。
然后问题来了。我收到了邮件,收到了 JSON ,怎么把邮件存在数据库?
{ text: 'This is a test mailing',
headers:
{ date: 'Wed, 10 Feb 2016 20:16:22 -0800',
to: '[email protected]',
from: '[email protected]',
subject: 'test Wed, 10 Feb 2016 20:16:22 -0800',
'x-mailer': 'swaks v20130209.0 jetmore.org/john/code/swaks/',
'mime-version': '1.0',
'content-type': 'multipart/mixed; boundary="----=_MIME_BOUNDARY_000_18907"' },
subject: 'test Wed, 10 Feb 2016 20:16:22 -0800',
priority: 'normal',
from: [ { address: '[email protected]', name: '' } ],
to: [ { address: '[email protected]', name: '' } ],
date: '2016-02-11T04:16:22.000Z',
attachments:
[ { contentType: 'image/gif',
fileName: '719.gif',
contentDisposition: 'attachment',
transferEncoding: 'base64',
generatedFileName: '719.gif',
contentId: 'dca3991c52568b0134a6cb117e1a7330@mailparser',
checksum: '44859f23af61cacb375df1379051da25',
length: 7298 } ],
html: 'This is a test mailing',
dkim: 'failed',
spf: 'failed',
spamScore: 0,
language: 'english',
cc: [],
connection:
{ id: '267e75b4-0003-40df-acec-59b7c5153bbb',
remoteAddress: '127.0.0.1',
clientHostname: '[127.0.0.1]',
hostNameAppearsAs: 'jerrys-macbook-pro.local',
envelope: { mailFrom: [Object], rcptTo: [Object] },
user: false,
transaction: 1,
xClient: {},
xForward: {},
mailPath: '.tmp/267e75b4-0003-40df-acec-59b7c5153bbb' },
envelopeFrom: { address: '[email protected]', args: false },
envelopeTo: [ { address: '[email protected]', args: false } ] }
什么数据库架构了? RDBMS ? NoSQL ?求大家给意见
1
kslr 2016-02-11 13:05:32 +08:00 via Android
原生支持 json 的呢, PostgreSQL, MongoDB
|
3
lhbc 2016-02-11 14:32:41 +08:00
邮件这东西,存文件应该比存数据库好。
既然解析成 json 了,那直接存 json 多好,最新的 MySQL 也支持 json 对于支持 json 的数据库,索引、搜索、读取 json 的部分内容,都是没有问题的 |
8
RangerWolf 2016-02-12 13:53:45 +08:00
最近大项目我喜欢用 Cassandra
小项目 mysql |