I really think paging is just breaking up this list function into limits().

Well, thinking further, this does bring up a concern about atomicity. If these lists grow or shrink while this this task is in flight, it could mean missed or duplicated email addresses.  Reading out the whole list avoided that problem.

@chrisndodge got any sense for which is less preferable: memory usage or potential atomic problems?  or is there a happy solution that achieves both that I'm currently missing.