Take extensive notes to organize your questions, thoughts, and understanding of the system. Do this even if you have no intention of reusing the notes. This has worked wonders for me when dealing with large legacy systems. It helps crystalize your understanding, helps put the open questions into words, and because your thoughts are already put together it makes it easier to communicate spontaneously with others about problems/questions/ideas/etc.
As an example, as I'm going through a piece of the code, I'll be taking notes to myself constantly. This is my conversation with myself. The mere act of writing helps more thoughts come out and helps me understand things better. After a while I may have a Eureka and need to draw out a little diagram with the "bigger picture" on paper to illustrate what I just thought of or what pieces I just put together. I always do this on paper only, getting rid of all the distractions of the computer. This lets me be more methodical and thoughtful about what I'm doing.
This is basically a convenient way to have a perpetual conversation with a domain expert :)